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

Краткое руководство по быстрой установке и настройке веб-сервера в связке 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

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

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