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 позволяет создать надёжную и производительную платформу для веб-разработки и развертывания динамических приложений. Следуя этим шагам, вы настроили сервер, готовый к работе с реальными проектами. В дальнейшем вы можете дополнительно оптимизировать сервер в зависимости от специфики ваших задач, обеспечивая стабильную и эффективную работу ваших веб-приложений.