Под LEMP подразумевается комплект инструментов, позволяющих работать с динамическими интернет-страницами. Эта аббревиатура расшифровывается как Linux, Nginx, MySql, PHP.
В случае с серверным дистрибутивом Ubuntu 18.04 это хорошее решение для развертывания веб-сервера и вспомогательных компонентов для его работы.
Nginx
Nginx – это современный веб-сервер, обладающий высокой производительностью и усиленной безопасностью.
Все необходимые пакеты для его инсталляции расположены в репозиториях Ubuntu. Делается это следующими командами:
sudo apt update
sudo apt install nginx
Как только установка завершится, Nginx сразу будет запущен.
Рекомендуем проверить работу Nginx. Для этого установим Net-Tools с помощью команды:
sudo apt-get install net-tools
Вводим команду для проверки соединения:
sudo netstat -nltup
Будет показано несколько адресов – проверить их нужно все, чтобы определить свой.
Остается проверить, как работает веб-сервер, введя IP-адрес или имя домена в браузере. Если все правильно, откроется страница с приветствием Nginx.
MySQL
MySQL — система управления БД. С ее помощью можно создавать базы данных, в которых хранится весь контент и другая информация сайта.
Для установки в терминале нужно ввести:
sudo apt install mysql-server-5.7
По завершении установки MySQL следует настроить. Сначала нужно включить скрипт, позволяющий избавиться от рискованных настроек:
sudo mysql_secure_installation
Появится предложение задать пароль для MySQL.
Далее будет предложено включить VALIDATE PASSWORD PLUGIN, плагин для контроля над сложностью паролей. Здесь следует понимать, что при включении этой опции слабые пароли будут отклонены системой и это повлечет дополнительные проблемы. Поэтому лучше отказаться от предложения и пользоваться своими надежными паролями.
Остальные настройки можно оставить по умолчанию – достаточно нажимать «y» (Yes), отвечая на следующие вопросы. Таким образом, будут удалены анонимные пользователи и тестовые БД, будет выключена удаленная авторизация root, а также пройдет обновление настроек MySQL.
PHP
PHP — язык программирования, с помощью которого создаются динамические веб-страницы.
В Nginx нет встроенной его поддержки, поэтому потребуется установить компонент php-fpm, чтобы сервер мог отправлять на обработку PHP-запросы.
Для начала понадобится установить пакет, обеспечивающего взаимодействие БД и PHP:
sudo apt install php-fpm php-mysql
После установки можно переходить к защите PHP. Нужно открыть файл конфигурации php-fpm с правами администратора:
sudo nano /etc/php/7.2/fpm/php.ini
В нем нужно найти строку cgi.fix_pathinfo, которая закомментирована точкой с запятой. Этот параметр нужно раскомментировать и дать ему значение 0: cgi.fix_pathinfo=0
Нужно сохранить изменения, а затем перезагрузить PHP:
sudo systemctl restart php7.2-fpm
Nginx и поддержка PHP
Так как все программы установлены, остается лишь настроить поддержку PHP в Nginx. Сделать это можно, изменив некоторые опции в файле по следующему пути:
sudo nano /etc/nginx/sites-available/default
Ниже показан блок Nginx по умолчанию (без закомментированных строчек):
server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; index index.html index.htm index.nginx-debian.html; server_name _; location / { try_files $uri $uri/ =404; } }
Привести этот блок к следующему виду:
server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; index index.php index.html index.htm index.nginx-debian.html; server_name your_server_domain_or_IP; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.2-fpm.sock; } location ~ /\.ht { deny all; } }
На место your_server_domain_or_IP впишите доменное имя или IP адрес сервера.
Далее нужно сохранить файл и проверить его на наличие ошибок:
sudo nginx -t
Наконец, остается перезапустить Nginx:
sudo systemctl reload nginx
Проверка работоспособности LEMP
Когда LEMP будет установлен, следует проверить, что веб-сервер без проблем работает с файлами PHP. Потребуется создать файл info.php в папке document root:
sudo nano /var/www/html/info.php
Добавить в него такие строки, сохранить изменения и закрыть:
<?php phpinfo(); ?>
Если в браузере после его запуска откроется страница с информацией о сервере, значит все сделано правильно.
Этот файл нужно обязательно стереть, чтобы другие лица не могли получить доступ к секретным данным:
sudo rm /var/www/html/info.php