Установка Nginx · 3 min read · Oct 24, 2025

Как установить Nginx с PHP и MySQL (LEMP стек) на CentOS 7

Nginx (произносится как “engine x”) — это бесплатный, открытый, высокопроизводительный HTTP-сервер. Nginx известен своей стабильностью, богатым набором функций, простой конфигурацией и низким потреблением ресурсов. Этот учебник показывает, как установить Nginx на сервер CentOS 7 с поддержкой PHP (через PHP-FPM) и поддержкой MySQL (Mariadb).

1 Предварительная заметка

В этом учебнике я использую имя хоста server1.example.com с IP-адресом 192.168.1.105. Эти настройки могут отличаться для вас, поэтому вам нужно заменить их, где это необходимо.

2 Включение дополнительных репозиториев

Nginx недоступен из официальных репозиториев CentOS, поэтому мы добавляем репозиторий проекта Nginx для его установки:

vi /etc/yum.repos.d/nginx.repo
 [nginx]
     name=nginx repo
     baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
     gpgcheck=0
     enabled=1

3 Установка MySQL

Сначала мы устанавливаем Mariadb. Mariadb — это бесплатный форк MySQL. Выполните эту команду в оболочке:

yum install mariadb mariadb-server net-tools

Затем мы создаем системные ссылки для автозагрузки MySQL (чтобы MySQL запускался автоматически при загрузке системы) и запускаем сервер MySQL:

systemctl enable mariadb.service  
systemctl start mariadb.service

Теперь проверьте, что сеть включена. Выполните

netstat -tap | grep mysql

Это должно показать что-то вроде этого:

[root@example ~]# netstat -tap | grep mysql  
tcp 0 0 0.0.0.0:mysql 0.0.0.0:* LISTEN 10623/mysqld 

Выполните

mysql_secure_installation

чтобы установить пароль для пользователя root (в противном случае любой сможет получить доступ к вашей базе данных MySQL!):

[root@example ~]# mysql_secure_installation  
/usr/bin/mysql_secure_installation: line 379: find_mysql_client: command not found
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB  
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
Чтобы войти в MariaDB и обеспечить ее безопасность, нам нужен текущий  
пароль для пользователя root. Если вы только что установили MariaDB, и  
вы еще не установили пароль root, пароль будет пустым,  
поэтому вам просто нужно нажать Enter здесь.
Введите текущий пароль для root (нажмите Enter для отсутствия):  
OK, успешно использован пароль, продолжаем...
Установка пароля root гарантирует, что никто не сможет войти в пользователя root MariaDB  
без надлежащей авторизации.
Установить пароль root? [Y/n] <-- ENTER  
Новый пароль: <-- yourrootsqlpassword  
Повторите новый пароль: <-- yourrootsqlpassword  
Пароль успешно обновлен!  
Перезагрузка таблиц привилегий..  
... Успех!
По умолчанию установка MariaDB имеет анонимного пользователя, позволяя любому  
войти в MariaDB без необходимости создания учетной записи пользователя для  
них. Это предназначено только для тестирования и для того, чтобы установка  
проходила немного легче. Вы должны удалить их перед переходом в  
производственную среду.
Удалить анонимных пользователей? [Y/n] <-- ENTER  
... Успех!
Обычно root должен иметь возможность подключаться только с 'localhost'. Это  
гарантирует, что кто-то не сможет угадать пароль root из сети.
Запретить удаленный вход root? [Y/n] <-- ENTER  
... Успех!
По умолчанию MariaDB поставляется с базой данных с именем 'test', к которой может  
доступ получить любой. Это также предназначено только для тестирования и  
должно быть удалено перед переходом в производственную среду.
Удалить тестовую базу данных и доступ к ней? [Y/n] <-- ENTER  
- Удаление тестовой базы данных...  
... Успех!  
- Удаление привилегий на тестовую базу данных...  
... Успех!
Перезагрузка таблиц привилегий обеспечит немедленное применение всех изменений,  
внесенных до сих пор.
Перезагрузить таблицы привилегий сейчас? [Y/n] <-- ENTER  
... Успех!
Очистка...
Все готово! Если вы завершили все вышеперечисленные шаги, ваша установка MariaDB  
теперь должна быть безопасной.
Спасибо за использование MariaDB!  
[root@example ~]#

[root@server1 ~]# mysql_secure_installation

4 Установка Nginx

Nginx доступен как пакет с nginx.org, который мы можем установить следующим образом:

yum install nginx

Затем мы создаем системные ссылки для автозагрузки nginx и запускаем его:

systemctl enable nginx.service  
systemctl start nginx.service

Существует вероятность, что вы получите ошибку, например, порт 80 уже используется, сообщение об ошибке будет выглядеть так:

[root@server1 ~]# service nginx start  
Starting nginx: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)  
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)  
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)  
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)  
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)  
nginx: [emerg] still could not bind()  
                                             [FAILED]  
[root@server1 ~]#

Тогда это означает, что существует вероятность, что служба apache работает. Остановите службу и затем запустите службу для NGINX следующим образом:

systemctl stop httpd.service  
yum remove httpd  
systemctl disable httpd.service
systemctl enable nginx.service  
systemctl start nginx.service

И откройте порты http и https в брандмауэре:

firebase-cmd --permanent --zone=public --add-service=http  
firebase-cmd --permanent --zone=public --add-service=https  
firebase-cmd --reload

Результирующий вывод в оболочке будет выглядеть так:

[root@example ~]# firewall-cmd --permanent --zone=public --add-service=http  
success  
[root@example ~]# firewall-cmd --permanent --zone=public --add-service=https  
success  
[root@example ~]# firewall-cmd --reload  
success  
[root@example ~]#

Введите IP-адрес или имя хоста вашего веб-сервера в браузере (например, http://192.168.1.105), и вы должны увидеть страницу приветствия nginx:

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.