Запуск LAMP-сервера на CentOS Stream 8

Краткая инструкция по быстрой установке и настройке веб-сервера в связке CentOS Stream 8.4, Apache HTTP Server, PHP и MariaDB (MySQL).

Установка сервера баз данных

Для начала необходимо установить MariaDB (MySQL) сервер. В подавляющем большинстве веб-сайтов это — один из главных шагов, без которого нет смысла запускать проект.

Ниже приведены несколько команд, которые помогут запустить сервер БД на начальном этапе:

# yum install mariadb mariadb-server
# systemctl enable mariadb
# systemctl start mariadb
# /usr/bin/mysql_secure_installation

Более подробно об установке сервера БД MariaDB (MySQL) можно почитать здесь: https://dondub.com/2021/05/zapusk-subd-mariadb-v-centos-stream/

Установка веб-сервера

Теперь необходимо установить Apache HTTP Server и модуль SSL

# yum install httpd mod_ssl

Включаем службу httpd в автозагрузку и запускаем её

# systemctl enable httpd
# systemctl start httpd

а также добавим правила для файрволла:

# firewall-cmd --add-service=http --zone=public --permanent
# firewall-cmd --add-service=https --zone=public --permanent
# firewall-cmd --reload

На другой машине в сети открываем браузер и в адресной строке впишем адрес сервера:

http://IP-адрес-сервера или https://IP-адрес-сервера

Должна отображаться страница по умолчанию

Установка PHP

Устанавливаем необходимые пакеты для работы интерпретатора PHP

# yum install php php-common php-gd php-xml php-mysqlnd php-mbstring php-pgsql

и перезапускаем службу httpd

# systemctl restart httpd

Затем создадим файл /var/www/html/info.php

# touch /var/www/html/info.php

откроем его

# vi /var/www/html/info.php

и впишем такие строчки:

<?php
	phpinfo();
?>

На другой машине в сети открываем браузер и в адресной строке впишем адрес сервера:

http://IP-адрес-сервера/info.php

Появится такая страница:

Это значит, что PHP установлен корректно и работает.

Настройка виртуальных хостов

Перед созданием виртуальных хостов необходимо убедиться в наличии соответствующих A или AAAA записей на DNS-сервере. Эти записи создаются в личном кабинете в панели управления регистратора доменных имён, или на собственном DNS-сервере https://dondub.com/tag/nameserver/.

Создадим директории для хранения файлов сайтов

# mkdir /var/www/html/{ws35.local,test.ws35.local}

После этого создадим в них файл index.html

# touch /var/www/html/{ws35.local,test.ws35.local}/index.html

Теперь откроем файл для сайта ws35.local

# vi /var/www/html/ws35.local/index.html

и впишем в него:

<html>
<body>
	<h1>ws35.local works!</h1>
</body>
</html>

также и для test.ws35.local

# vi /var/www/html/test.ws35.local/index.html
<html>
<body>
	<h1>test.ws35.local works!</h1>
</body>
</html>

Затем создадим файлы конфигураций виртуальных хостов в директории /etc/httpd/conf.d/

# cd /etc/httpd/conf.d/
# touch ws35.local.conf ws35.local.ssl.conf test.ws35.local.conf test.ws35.local.ssl.conf

Теперь откроем файл для сайта ws35.local

# vi ws35.local.conf

и впишем в него:

<VirtualHost *:80>
ServerAdmin webmaster@ws35.local
DocumentRoot "/var/www/html/ws35.local/"
ServerName www.ws35.local
ServerAlias ws35.local
ErrorLog "/var/log/httpd/ws35.local-error_log"
CustomLog "/var/log/httpd/ws35.local-access_log" combined

<Directory "/var/www/html/ws35.local/">
DirectoryIndex index.html index.php
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

затем SSL для него же:

# vi ws35.local.ssl.conf
<VirtualHost *:443>

DocumentRoot "/var/www/html/ws35.local/"
ServerName www.ws35.local
ServerAlias ws35.local

ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn

SSLEngine on

SSLHonorCipherOrder on

SSLCipherSuite PROFILE=SYSTEM
SSLProxyCipherSuite PROFILE=SYSTEM

SSLCertificateFile /etc/pki/tls/certs/ws35.local.ssl.crt

SSLCertificateKeyFile /etc/pki/tls/private/ws35.local.ssl.key

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/var/www/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

CustomLog logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>

а также для test.ws35.local

# vi test.ws35.local.conf
<VirtualHost *:80>
ServerAdmin webmaster@test.ws35.local
DocumentRoot "/var/www/html/test.ws35.local/"
ServerName test.ws35.local
ServerAlias test.ws35.local
ErrorLog "/var/log/httpd/test.ws35.local-error_log"
CustomLog "/var/log/httpd/test.ws35.local-access_log" combined

<Directory "/var/www/html/test.ws35.local/">
DirectoryIndex index.html index.php
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
# vi test.ws35.local.ssl.conf
<VirtualHost *:443>

DocumentRoot "/var/www/html/test.ws35.local/"
ServerName test.ws35.local
ServerAlias test.ws35.local

ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn

SSLEngine on

SSLHonorCipherOrder on

SSLCipherSuite PROFILE=SYSTEM
SSLProxyCipherSuite PROFILE=SYSTEM

SSLCertificateFile /etc/pki/tls/certs/ws35.local.ssl.crt

SSLCertificateKeyFile /etc/pki/tls/private/ws35.local.ssl.key

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/var/www/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

CustomLog logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>

После этого скопируем файлы для предварительных SSL-сертификатов, иначе служба httpd выдаст ошибку при следующем запуске

# cp /etc/pki/tls/certs/localhost.crt /etc/pki/tls/certs/ws35.local.ssl.crt
# cp /etc/pki/tls/private/localhost.key /etc/pki/tls/private/ws35.local.ssl.key

и перезапускаем httpd

# systemctl restart httpd

Проверяем:

http://ws35.local

https://ws35.local

http://test.ws35.local

https://test.ws35.local

Подключение SSL сертификатов

Один из самых эффективных способов настройки SSL-сертификатов — это через специализированные сервисы. Например — Certbot.

Инструкция по установке и настройке сертификатов: https://certbot.eff.org/lets-encrypt/centosrhel8-apache.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *