Стек 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
http://localhost.sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
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 может дополнительно защитить систему от несанкционированного доступа.
Наконец, регулярный мониторинг и аудит действий пользователей помогут выявлять подозрительные операции и реагировать на них своевременно. Ведение журналов позволяет отслеживать изменения и обеспечивать дополнительный уровень защиты, делая систему более устойчивой к угрозам.

