Установка LEMP-стека на CentOS 7
LEMP — это акроним, обозначающий набор программного обеспечения, широко используемого на веб-серверах. Рассмотрим его установку на CentOS 7, однако перед этим произведем обновление системы и выполним перезагрузку:
sudo yum update -y
rebootНастройка Firewall
Так как по умолчанию порты 80 и 443 закрыты настройками файрвола, следует выполнить несколько команд для получения доступа к веб-серверу из интернета.
Открываем порт 80:
sudo firewall-cmd --permanent --zone=public --add-service=http
Открываем порт 443:
sudo firewall-cmd --permanent --zone=public --add-service=https
Перезагружаем службу:
sudo systemctl restart firewalld
Проверяем внесенные изменения:
sudo firewall-cmd --zone=public --list-services
В итоге должно отобразиться следующее:
dhcpv6-client http https sshУстановка Nginx
Включаем репозиторий EPEL, если это не было сделано ранее. EPEL содержит некоторые пакеты, которые не вошли в стандартный набор RHEL (CentOS), в том числе Nginx. Вводим следующую команду для подключения репозитория:
sudo yum install epel-release -yУстановим непосредственно сам Nginx:
sudo yum install nginx -yЗапускаем сервис и добавляем его в автозапуск:
sudo systemctl start nginx
sudo systemctl enable nginxУстановка MariaDB
Теперь перейдем к установке и первоначальной настройке СУБД:
sudo yum install mariadb-server mariadb -yЗапускаем службу аналогично Nginx:
sudo systemctl start mariadb
sudo systemctl enable mariadbСледующей командой запустим базовую настройку безопасности:
sudo mysql_secure_installationПроцесс заключается в установке пароля root-доступа к базам, отключении анонимного и удаленного доступа и удалении тестовых баз. Если не требуется иное, читаем запрос и соглашаемся нажатием клавиши "Y".
Установка PHP 7.3
Поддерживаемые версии PHP можно посмотреть на официальном сайте. В нашем случае устанавливаем PHP версии 7.3 и подключаем репозиторий Remi следующей командой:
sudo rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpmДалее устанавливаем пакет yum-utils для работы с репозиторием Remi:
sudo yum install yum-utilsТеперь нужно активировать репозиторий и запустить установку пакетов PHP 7.3:
sudo yum-config-manager --enable remi-php73
sudo yum install php73 -yЗавершим процесс установки подключением часто используемых модулей и запуском php-fpm:
sudo yum install php-fpm php-mysql php-cli php-mbstring php-opcache php-curl php-gd -y
systemctl start php-fpm
systemctl enable php-fpmНастройка PHP
Открываем файл настроек php.ini:
nano /etc/php.iniМеняем значение cgi.fix_pathinfo. Данное изменение внесет запрет на исполнение произвольного кода на сервере с правами PHP-процесса при загрузке файла:
..
cgi.fix_pathinfo=0 #Убираем комментарий ";" в начале строки и меняем 1 на 0
..Далее меняем группу и пользователя с Apache на Nginx в конфигурационном файле php-fpm:
sudo nano /etc/php-fpm.d/www.confПолучаем:
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginxПерезапускаем php-fpm:
sudo systemctl restart php-fpmНастройка Nginx
Откроем файл конфигураций Nginx:
sudo nano /etc/nginx/nginx.confВносим следующие изменения в файл:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name 46.243.182.96; #Пишем имя сервера или IP адрес
root /usr/share/nginx/html;
include /etc/nginx/default.d/*.conf;
location / {
root /usr/share/nginx/html;
index index.php index.html index.htm; #Добавляем index.php
}
error_page 404 /404.html;
location = /40x.html {
root /usr/share/nginx/html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ .php$ { #Добавляем возможность обрабатывать запросы PHP
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}Настало время проверить наш веб-сервер. Создадим страницу по следующему пути:
nano /var/www/html/info.phpВставим следующую строку и сохраним файл:
<?php phpinfo();?>Перезапустим Nginx командой:
sudo systemctl restart nginxТеперь, если вы зайдете через браузер на ваш веб-сервер по адресу http://server_name/info.php (http://xxx.xxx.xxx.xxx/info.php, где xxx.xxx.xxx.xxx — адрес), то увидите информационную страницу:

700
300
700
300
700
300