ВОЙТИ
    opened image

    ​​​​​​​

     

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