opened image

От нуля до героя: создание сервера LEMP на Rocky Linux 9

​​​​​​​

 

LEMP-стек (Linux, Nginx, MySQL и PHP) — это набор открытого программного обеспечения, который позволяет разрабатывать и размещать динамические веб-приложения на сервере. В состав стека входят Linux в качестве операционной системы, Nginx как веб-сервер, MySQL (или MariaDB) для управления базами данных и PHP (или Python/Perl) для серверного программирования. Эти компоненты взаимодействуют друг с другом, создавая мощную, эффективную и масштабируемую среду для веб-разработки.

 

В этой статье описывается процесс установки LEMP-стека на Rocky Linux 9 и настройка сервера для развертывания веб-приложений.

 

Установка Nginx

 

Nginx доступен в стандартных репозиториях Rocky Linux 9. Выполните следующие шаги, чтобы установить веб-сервер Nginx с использованием менеджера пакетов DNF.

 

Установите Nginx:

 

sudo dnf install nginx


Проверьте установленную версию Nginx:

 

nginx -v


Результат:

 

 

Включите автозапуск Nginx при загрузке системы:

 

sudo systemctl enable nginx

 

Запустите Nginx:

 

sudo systemctl start nginx


Проверьте статус службы Nginx:

 

sudo systemctl status nginx

 

Результат:

 

 

 

Установка MySQL

 

MySQL также доступен в стандартных репозиториях Rocky Linux 9. В зависимости от ваших потребностей, вы можете выбрать между MySQL и MariaDB. Ниже описан процесс установки сервера базы данных MySQL и настройки безопасной аутентификации для всех пользователей базы данных.

 

Установите MySQL:

 

sudo dnf install mysql-server


Проверьте установленную версию MySQL:

 

mysql --version

 

Результат:

 

 


Включите автозапуск MySQL при загрузке системы:

 

sudo systemctl enable mysqld



Запустите MySQL:

 

sudo systemctl start mysqld

 

Проверьте статус службы MySQL:

 

sudo systemctl status mysqld

 

Результат:

 

 

Запустите скрипт mysql_secure_installation для настройки аутентификации и отключения небезопасных настроек по умолчанию:

 

sudo mysql_secure_installation

 

Примеры ответов при выполнении скрипта:

 

 

 


Войдите в консоль MySQL как пользователь root:

 

mysql -u root -p

 

Просмотрите все доступные базы данных:

 

SHOW DATABASES;

 


Результат:

 

 

Выйдите из консоли MySQL:

 

EXIT;

 

Установка PHP и настройка PHP-FPM

 

PHP обрабатывает динамический контент веб-приложений, а PHP-FPM (FastCGI Process Manager) обеспечивает его выполнение с оптимизацией производительности. Выполните следующие шаги для установки PHP и настройки PHP-FPM для работы с Nginx.

 

Установите PHP и PHP-FPM:

 

sudo dnf install php php-fpm

 

Установите необходимые расширения PHP:

 

sudo dnf install php-mysqlnd php-gd php-mbstring php-xml

 

Эти расширения обеспечивают:

  • php-mysqlnd: подключение PHP к MySQL.
  • php-mbstring: работу с многобайтовыми строками.
  • php-xml: работу с XML.
  • php-gd: обработку изображений.

 

Проверьте установленную версию PHP:

 

php -v

 

Результат:

 

 

Включите автозапуск PHP-FPM при загрузке системы:

 

sudo systemctl enable php-fpm

 

 

Запустите PHP-FPM:

 

sudo systemctl start php-fpm

 

Откройте конфигурационный файл www.conf и измените параметры пользователя и группы с apache на nginx:


 

sudo vim /etc/php-fpm.d/www.conf

 

  • user = nginx
  • group = nginx

 

Сохраните и закройте файл.

 

Перезапустите PHP-FPM:
 

sudo systemctl restart php-fpm

 

Настройка Nginx с PHP-FPM

 

Nginx подключается к PHP-FPM через Unix-сокет или порт 9000. Для корректной работы Nginx и PHP-FPM должны использовать одного и того же пользователя и группу. Следуйте этим шагам для настройки:

Создайте файл info.php в корневой директории веб-сервера /var/www/html:

 

sudo vim /var/www/html/info.php

 

Добавьте следующий код:

 

<?php

phpinfo();

?>


Сохраните и закройте файл. Этот код выводит информацию о текущей версии PHP и доступных модулях.

Создайте новый конфигурационный файл виртуального хоста Nginx, например, example.com.conf в /etc/nginx/conf.d:

 

sudo vim /etc/nginx/conf.d/example.com.conf

 

Добавьте следующие настройки, заменив example.com на ваш домен:

 

server {
    listen 80;
    server_name example.com;
    root /var/www/html;
    index info.php index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_index info.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

 

Сохраните и закройте файл.

 

Эта конфигурация создаёт новый виртуальный хост, который принимает запросы на HTTP-порту 80 для домена app.example.com, обслуживая файлы из корневой директории /var/www/html и передавая PHP-запросы на PHP-FPM через Unix-сокет.

 

Проверьте конфигурацию Nginx на ошибки:

 

nginx -t

 


Перезапустите Nginx для применения изменений:

 

sudo systemctl restart nginx

 

Назначьте пользователю и группе nginx права на корневую директорию веб-сервера:

 

sudo chown -R nginx:nginx /var/www/html/

 

Установите права доступа для файла info.php:

 

sudo chmod 755 /var/www/html/info.php

 

Настройте контекст SELinux для веб-директории:

 

sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
sudo restorecon -Rv /var/www/html

 

Проверьте контекст безопасности:

 

ls -Z /var/www/html

 


Разрешите HTTP-соединения через брандмауэр:

 

sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --reload

 

Перейдите на ваш домен в браузере, чтобы убедиться, что информация о PHP отображается:


 

http://example.com

 

​​​​​​​
Заключение

​​​​​​​

Установка и настройка LEMP-стека на Rocky Linux 9 позволяет создать надёжную и производительную платформу для веб-разработки и развертывания динамических приложений. Следуя этим шагам, вы настроили сервер, готовый к работе с реальными проектами. В дальнейшем вы можете дополнительно оптимизировать сервер в зависимости от специфики ваших задач, обеспечивая стабильную и эффективную работу ваших веб-приложений.