Настройка Nginx + MariaDB + PHP-FPM на CentOS/RHEL 9/8

Стек LEMP, состоящий из Linux, Nginx, MariaDB и PHP-FPM, является эффективным решением для размещения динамических веб-сайтов и приложений. CentOS/RHEL, известный своей надежностью и безопасностью, является отличным вариантом для создания такой инфраструктуры. В данном руководстве представлены подробные шаги по установке и настройке Nginx, MariaDB и PHP-FPM, с акцентом на определённую версию PHP для удовлетворения потребностей различных приложений.

Перед началом установки рекомендуется обновить систему, чтобы обеспечить наличие всех последних исправлений безопасности. Это можно сделать с помощью команды:

sudo dnf update -y

После обновления системы можно приступить к установке необходимых пакетов. Убедитесь, что репозитории EPEL и Remi включены, так как они предоставляют последние версии PHP и дополнительных модулей:

sudo dnf install epel-release -y
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y

Далее мы активируем репозиторий Remi для установки PHP. Например, для установки PHP 8.0 используйте следующую команду:

sudo dnf module enable php:remi-8.0 -y

Установка Nginx производится простой командой:

sudo dnf install nginx -y

После установки необходимо запустить и включить Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Для установки MariaDB выполните команду:

sudo dnf install mariadb-server -y

Запустите MariaDB и настройте его для автозагрузки:

sudo systemctl start mariadb
sudo systemctl enable mariadb

Важно выполнить первоначальную настройку безопасности MariaDB с помощью команды:

sudo mysql_secure_installation

Для установки PHP-FPM используйте следующую команду:

sudo dnf install php-fpm -y

После установки PHP-FPM его также нужно запустить и настроить на автозагрузку:

sudo systemctl start php-fpm
sudo systemctl enable php-fpm

Теперь, когда все компоненты установлены и запущены, нужно настроить конфигурацию Nginx для работы с PHP. Это включает в себя редактирование файла конфигурации вашего сайта, чтобы указать обработку PHP-файлов через PHP-FPM. Рекомендуется создать отдельный файл конфигурации для вашего сайта в директории /etc/nginx/conf.d/.

Не забудьте проверить конфигурацию Nginx и перезапустить сервис после внесения изменений:

sudo nginx -t
sudo systemctl restart nginx

Таким образом, вы настроили LEMP-стек на CentOS/RHEL, готовый к размещению ваших веб-приложений.

  • Предварительное обновление системы
    • Обновите системные пакеты:

    sudo dnf update sudo dnf upgrade
    sudo dnf install epel-release

    • После выполнения обновлений, перезагрузите систему для применения изменений:

    sudo reboot

    • Рекомендуется также проверить наличие обновлений для установленных программ:

    sudo dnf check-update

    • Для управления зависимостями и установки новых пакетов используйте следующие команды:

    sudo dnf install <имя_пакета>

    • Чтобы удалить ненужные пакеты, воспользуйтесь:

    sudo dnf remove <имя_пакета>

  • Установка Nginx
    • Установите Nginx:
    • Обновите список пакетов перед установкой:

    sudo dnf update

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

    sudo dnf install nginx
    sudo systemctl start nginx sudo systemctl enable nginx
    sudo systemctl status nginx

  • Проверьте, что Nginx запущен, открыв веб-браузер и введя http://localhost.
  • Если у вас установлен брандмауэр, откройте порт 80 для HTTP:
  • sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --reload

  • Для HTTPS также откройте порт 443:
  • sudo firewall-cmd --permanent --add-service=https
    sudo firewall-cmd --reload
    Теперь Nginx установлен и готов к использованию.

  • Установка MariaDB
    • Установите MariaDB:

    sudo dnf install mariadb-server
    sudo systemctl start mariadb
    sudo systemctl enable mariadb
    sudo mysql_secure_installation
    После выполнения команды sudo mysql_secure_installation вы сможете настроить параметры безопасности, такие как установка пароля для пользователя root, удаление анонимных пользователей, запрет удаленного входа для пользователя root и удаление тестовой базы данных.
    Также рекомендуется проверить статус службы MariaDB с помощью команды:
    sudo systemctl status mariadb
    Если служба работает корректно, вы увидите сообщение, что она активна (active).
    Не забудьте также открыть порт 3306 в вашем файерволе, если вы планируете подключаться к базе данных удаленно:
    sudo firewall-cmd --add-port=3306/tcp --permanent
    sudo firewall-cmd --reload

    Дополнительные рекомендации:

    • Для управления MariaDB вы можете использовать команду mysql -u root -p для входа в консоль MariaDB с правами администратора.
    • Рекомендуется регулярно обновлять MariaDB, используя команду sudo dnf update mariadb-server.
    • Создайте резервные копии вашей базы данных с помощью mysqldump, например:
      mysqldump -u root -p --all-databases > backup.sql.
    • Для мониторинга производительности и состояния MariaDB вы можете установить и использовать инструменты мониторинга.

  • Установка PHP и PHP-FPM
    • Установите нужную версию PHP и PHP-FPM (например, PHP 7.4):

    sudo dnf install php74 php74-php-fpm php74-php-mysqlnd
    sudo systemctl start php74-php-fpm sudo systemctl enable php74-php-fpm

    После установки PHP и PHP-FPM, рекомендуется проверить корректность установки, выполнив команду:

    php -v

    Эта команда выведет информацию о установленной версии PHP. Если вы планируете использовать PHP с веб-сервером, таким как Nginx или Apache, необходимо настроить их для работы с PHP-FPM.

    Для Nginx добавьте следующие строки в конфигурационный файл вашего сайта:


    location ~ \.php$ {
    include fastcgi_params;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    Не забудьте перезапустить Nginx после внесения изменений:

    sudo systemctl restart nginx

    Для обеспечения безопасности рекомендуется также настроить соответствующие права доступа к директориям и файлам, используемым вашим приложением.

  • Настройка Nginx для работы с PHP-FPM
    • Измените файл конфигурации Nginx:

    sudo nano /etc/nginx/conf.d/default.conf

    • Добавьте следующий блок серверной конфигурации:


    server {
    listen 80;
    server_name your_domain.com; # Замените на ваше доменное имя
    root /var/www/html; # Убедитесь, что путь верен
    index index.php index.html index.htm;
    location / {
    try_files $uri $uri/ /index.php?$query_string;
    }
    location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # Замените на вашу версию PHP
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    }
    location ~ /\.ht {
    deny all;
    }
    }

    • Сохраните изменения и выйдите из редактора.
    • Перезагрузите Nginx для применения изменений:

    sudo systemctl restart nginx

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

    sudo nginx -t

    • Если ошибок нет, Nginx будет работать с PHP-FPM.
    • Не забудьте настроить права доступа к папкам с вашими файлами и убедитесь, что PHP-FPM запущен:

    sudo systemctl status php7.4-fpm

    • Также рекомендуется установить дополнительные модули PHP, если они необходимы для вашего приложения. Например:

    sudo apt install php7.4-mbstring php7.4-xml php7.4-mysql

    • Следите за логами Nginx и PHP-FPM для выявления возможных проблем:

    tail -f /var/log/nginx/error.log
    tail -f /var/log/php7.4-fpm.log

    • Помните, что настройка вашего сайта также может включать дополнительные меры безопасности, такие как использование HTTPS. Рассмотрите возможность установки сертификата SSL через Let’s Encrypt:

    sudo apt install certbot python3-certbot-nginx
    sudo certbot --nginx -d your_domain.com

  • Тестирование PHP
    • Создайте тестовый файл PHP:

    sudo nano /usr/share/nginx/html/info.php

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

    • Сохраните изменения и выйдите из редактора (нажмите Ctrl + X, затем Y и Enter).
    • Откройте веб-браузер и перейдите по адресу: http://ваш_сервер/info.php. Это отобразит информацию о вашей версии PHP и настройках.
    • Не забудьте удалить файл info.php после тестирования, чтобы избежать утечки информации о конфигурации сервера.

    sudo rm /usr/share/nginx/html/info.php

  • Настройка брандмауэра
    • Разрешите HTTP и HTTPS трафик, если firewalld активирован:

    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
    sudo firewall-cmd --reload

    • Для проверки текущих настроек брандмауэра используйте команду:

    sudo firewall-cmd --list-all

    • Если вы хотите разрешить доступ только с определённых IP-адресов, используйте:

    sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept'

    • Не забудьте перезагрузить службу, чтобы изменения вступили в силу:

    sudo systemctl restart firewalld

    • Для удаления правила используйте команду:

    sudo firewall-cmd --permanent --remove-service=http

    • Регулярно проверяйте логи брандмауэра для анализа подозрительной активности:

    sudo journalctl -u firewalld

    • Для ограничения доступа по портам, вы можете добавлять правила на основе портов:

    sudo firewall-cmd --permanent --add-port=8080/tcp

    • Для временного разрешения сервиса без перезагрузки используйте:

    sudo firewall-cmd --add-service=http

    • Вы можете создать резервную копию текущих настроек брандмауэра:

    sudo firewall-cmd --zone=public --list-all > /path/to/backup.txt

    • Чтобы удалить правило по IP, используйте:

    sudo firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.1.100" accept'

    • Для более детального анализа состояния брандмауэра, используйте:

    sudo firewall-cmd --state

  • Защита сервера
    • Обновляйте пакеты регулярно.
    • Используйте сложные пароли для всех сервисов.
    • Рассмотрите возможность использования SSL-сертификатов для HTTPS.
    • Настройте брандмауэр для ограничения доступа к серверу.
    • Включите двухфакторную аутентификацию для дополнительных сервисов.
    • Регулярно проводите аудит безопасности и проверку журналов.
    • Используйте инструменты для мониторинга активности и ресурсов сервера.

    Вы успешно настроили стек LEMP на CentOS/RHEL с Nginx, MariaDB и конкретной версией PHP-FPM. Эта среда отлично подходит для развертывания разнообразных веб-приложений, обеспечивая надежность и высокую производительность. Регулярное обслуживание и применение мер безопасности крайне важны для поддержания стабильной работы вашего сервера. Не забывайте также резервировать данные и поддерживать систему резервного копирования, чтобы избежать потерь в случае сбоев или атак.

    Кроме того, рассмотрите возможность использования инструментов для защиты от DDoS-атак и настройте регулярное сканирование на уязвимости. Эффективное управление правами доступа пользователей также поможет минимизировать риски.

    Безопасность и управление доступом в MariaDB

    Первым шагом в обеспечении безопасности является использование надежных паролей для учетных записей пользователей. Рекомендуется применять сложные пароли, которые включают сочетания букв, цифр и специальных символов. Также важно регулярно менять пароли, чтобы минимизировать риски.

    Кроме того, следует ограничить доступ пользователей к базе данных. Это можно реализовать через роль и права доступа, позволяя пользователям выполнять только те операции, которые необходимы для их работы. Важно создавать учетные записи с минимально необходимыми привилегиями, что уменьшает вероятность случайного или преднамеренного повреждения данных.

    Настройка сетевого доступа также играет значительную роль в безопасности. Необходимо ограничить доступ к базе данных только с определенных IP-адресов, что позволяет предотвратить атаки извне. Использование брандмауэров и VPN может дополнительно защитить систему от несанкционированного доступа.

    Наконец, регулярный мониторинг и аудит действий пользователей помогут выявлять подозрительные операции и реагировать на них своевременно. Ведение журналов позволяет отслеживать изменения и обеспечивать дополнительный уровень защиты, делая систему более устойчивой к угрозам.

    Читайте также:  Как в Linux Mint отменить ввод пароля при запуске хрома?

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

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