Инструкция по установке LEMP (Linux, Nginx, MySQL, PHP) стека на 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; #<em>Пишем имя сервера или IP адрес</em>
root /usr/share/nginx/html;
include /etc/nginx/default.d/*.conf;
location / {
root /usr/share/nginx/html;
index index.php index.html index.htm; #<em>Добавляем index.php</em>
}
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$ { #<em>Добавляем возможность обрабатывать запросы PHP</em>
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 — адрес), то увидите информационную страницу: