Краткое руководство по быстрой установке и настройке веб-сервера в связке CentOS Stream 8.4, HTTP-сервера nginx, 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/
Установка веб-сервера
Теперь необходимо установить HTTP-сервера nginx
# yum install nginx
Включаем службу nginx в автозагрузку и запускаем её
# systemctl enable nginx # systemctl start nginx
а также добавим правила для файрволла:
# firewall-cmd --add-service=http --zone=public --permanent # firewall-cmd --add-service=https --zone=public --permanent # firewall-cmd --reload
На другой машине в сети открываем браузер и в адресной строке впишем адрес сервера:
http://IP-адрес-сервера
Должна отобразиться страница по умолчанию
/usr/share/nginx/html — страница nginx по умолчанию для Red Hat Enterprise Linux
Установка PHP и php-fpm
Устанавливаем необходимые пакеты для работы PHP и php-fpm
# yum install php php-common php-gd php-xml php-mysqlnd php-mbstring php-fpm
Затем открываем файл /etc/php.ini
# vi /etc/php.ini
здесь после закомментированной строчки
;cgi.fix_pathinfo=1
добавим такую:
cgi.fix_pathinfo=0
Далее открываем файл /etc/php-fpm.d/www.conf
# vi /etc/php-fpm.d/www.conf
находим строчки
user = apache group = apache
и исправим на:
user = nginx group = nginx
также после закомментированных строчек
;listen.owner = nobody ;listen.group = nobody
добавим такие:
listen.owner = nginx listen.group = nginx
а также исправим
listen = /run/php-fpm/www.sock
на:
listen = /run/php-fpm/php-fpm.sock
После этого включим службу php-fpm в автозагрузку и запустим её
# systemctl enable php-fpm # systemctl start php-fpm
Теперь открываем файл /etc/nginx/nginx.conf
# vi /etc/nginx/nginx.conf
находим секцию
location ~ \.php$ { ... }
и приведём её к такому виду:
location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
После этого перезапустим службу nginx
# systemctl restart nginx
Далее проверим работу PHP. Для этого создадим файл /usr/share/nginx/html/info.php и откроем его
# touch /usr/share/nginx/html/info.php # vi /usr/share/nginx/html/info.php
и запишем в него такие строчки:
<?php phpinfo(); ?>
На другой машине в сети открываем браузер и в адресной строке введём
http://IP-адрес-сервера/info.php
появится страница с информацией о настройках PHP
Настройка виртуальных хостов
Перед созданием виртуальных хостов необходимо убедиться в наличии соответствующих A или AAAA записей на DNS-сервере. Эти записи создаются в личном кабинете в панели управления регистратора доменных имён, или на собственном DNS-сервере https://dondub.com/tag/nameserver/
Для виртуальных хостов ws35.local и test.ws35.local необходимо создать каталог /etc/nginx/vhosts/ и в нём — файлы ws35.local.conf и test.ws35.local.conf
# mkdir /etc/nginx/vhosts/ # touch /etc/nginx/vhosts/{ws35.local.conf,test.ws35.local.conf}
Затем откроем файл /etc/nginx/nginx.conf
# vi /etc/nginx/nginx.conf
и для создания виртуальных хостов перед последней закрывающей скобкой подключим conf-файлы в каталоге /etc/nginx/vhosts/
include /etc/nginx/vhosts/*.conf;
Теперь откроем файл /etc/nginx/vhosts/ws35.local.conf
# vi /etc/nginx/vhosts/ws35.local.conf
и запишем в него примерно такое содержимое:
server { listen 192.168.1.35:80; server_name ws35.local; access_log /var/log/nginx/ws35.local_access_log main; error_log /var/log/nginx/ws35.local_error_log info; root /var/www/ws35.local/htdocs; location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Также сделаем и для /etc/nginx/vhosts/test.ws35.local.conf
# vi /etc/nginx/vhosts/test.ws35.local.conf
server { listen 192.168.1.35:80; server_name test.ws35.local; access_log /var/log/nginx/test.ws35.local_access_log main; error_log /var/log/nginx/ws35.local_error_log info; root /var/www/test.ws35.local/htdocs; location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Далее создадим необходимые каталоги для хранения файлов сайтов и файл index.html в них
# mkdir /var/www/{ws35.local,test.ws35.local}/ # mkdir /var/www/{ws35.local,test.ws35.local}/htdocs/ # touch /var/www/{ws35.local,test.ws35.local}/htdocs/index.html
Открываем /var/www/ws35.local/htdocs/index.html
# vi /var/www/ws35.local/htdocs/index.html
и запишем в него:
<html> <head> <title>ws35.local start page</title> </head> <body> <p align="center">Welcome to ws35.local</p> </body> </html>
Также сделаем и с /var/www/test.ws35.local/htdocs/index.html
# vi /var/www/test.ws35.local/htdocs/index.html
<html> <head> <title>test.ws35.local start page</title> </head> <body> <p align="center">Welcome to test.ws35.local</p> </body> </html>
На другой машине в адресной строке браузера откроем
http://ws35.local
а также:
http://test.ws35.local