В статье рассмотрен процесс настройки LEMP-стека на VPS под управлением операционной системы Ubuntu 16.04.
Что такое LЕMP
LEMP - это аналог популярного стека LAMP, используемого для разработки и развертывания веб-приложений. Традиционно LAMP состоит из Linux, Apache, MySQL и PHP. Благодаря своей модульной природе компоненты легко могут быть заменены. В LEMP Apache заменяется легким, но мощным Nginx, который может обеспечить более предсказуемую производительность при высоких нагрузках.
Apache vs Nginx
Apache:
- Разрабатывается с 1995 года, к нынешнему моменту имеет много пользователей, существует большое количество модулей (в основном с открытым исходным кодом), написанных для расширения его функциональности;
- Процессы или поточно-ориентированный подход замедляют работу веб-сервера при большой нагрузке, необходимо создавать новые процессы и потреблять больше ОЗУ, а также создавать новые потоки, которые должны конкурировать за ресурсы ЦП и ОЗУ;
- Должен быть установлен предел для обеспечения того, чтобы ресурсы не перегружались, когда предел достигнут, дополнительные соединения будут отклонены.
Nginx:
- Веб-сервер с открытым исходным кодом, написанный для решения проблем производительности и масштабируемости, связанных с Apache;
- Механизм nginx, управляемый событиями, асинхронный и неблокирующий, не создает новые процессы для каждого веб-запроса;
Установка Nginx
Чтобы поставить Nginx для LEMP вам необходимо подключиться к VPS с ОС Ubuntu и исполнить следующие команды:
sudo apt-get update
sudo apt-get install nginx
Чтобы проверить установку сервера nginx, перейдите в любом браузере по следующей ссылке, указав IP-адрес вашего VDS:
http://<ip-адрес_сервера>/
Например:
http://5.101.77.24/
Примечание: если у вас не получается подключиться, проверьте настройки FireWall, веб-сервер Nginx по умолчанию работает на порту 80, чтобы добавить правило выполните следующую пару команд:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables-save
Как узнать IP-адрес сервера
Адрес сервера можно найти на вкладке «Состояние» страницы «Серверы» в панели управления.
Установка MySQL(MariaDB) на Ubuntu
MySQL — это система управления базами данных (СУБД), которая используется для организации и получения контента.
Сегодня в LEMP стеке MySQL заменяется на популярный аналог - MariaDB. MariaDB имеет те же возможности, что и MySQL, и при этом является полностью бесплатной.
Примечание: если вы предпочитаете использовать базу данных MySQL в Ubuntu или ваш проект работает именно с ней, вам нужно будет добавить необходимые репозитории и установить БД с помощью инструкции.
Установите пакеты из главного репозитория Ubuntu с помощью менеджера пакетов:
sudo apt-get install mariadb-server mariadb-client
После успешной установки выполните настройки безопасности и удалите некоторые значения по умолчанию. Приведите в действие скрипт:
sudo mysql_secure_installation
Здесь MariaDB попросит вас задать пароль супер-пользователя БД. Затем система попросит ответить на несколько вопросов (они служебные и на каждый из них без лишних проблем можно ответить Yes).
После этого конфигурирование базы данных завершено, и можно переходить к следующему шагу настройки LEMP стека — установке PHP.
Установка PHP на Ubuntu
Для установки компонента обработки программного кода PHP установите пакеты из главного репозитория с помощью менеджера пакетов:
sudo apt-get install php7.0-mysql php7.0-curl php7.0-json php7.0-cgi php7.0 libapache2-mod-php7.0 php7.0-xml
В процессе установки потребуется 1 или 2 раза ответить ‘Yes’ на вопросы системы.
Модули PHP
Для повышения функциональности LEMP вы можете дополнительно поставить некоторые модули php. Посмотреть список доступных библиотек можно с помощью команды:
apt-cache search php7
После этого система выдаст список, начало которого выглядит похожим образом:
libapache2-mod-php7.0 - server-side, HTML-embedded scripting language (Apache 2 module) php-all-dev - package depending on all supported PHP development packages php7.0 - server-side, HTML-embedded scripting language (metapackage) php7.0-cgi - server-side, HTML-embedded scripting language (CGI binary) php7.0-cli - command-line interpreter for the PHP scripting language php7.0-common - documentation, examples and common module for PHP php7.0-curl - CURL module for PHP php7.0-dev - Files for PHP7.0 module development php7.0-gd - GD module for PHP php7.0-gmp - GMP module for PHP
Если вы решите установить какой-либо из модулей, то это можно сделать с помощью специальной команды:
sudo apt-get install <имя пакета>
Например:
sudo apt-get install php7.0-gmp
Настройка Nginx для работы с PHP и MySQL
Для настройки связи между PHP и MySQL в LEMP стеке для nginx необходимо установить дополнительные модули и внести изменения в конфигурационный файл:
sudo apt-get install php-fpm php-mysql
С помощью текстового редактора, например vi, откройте файл конфигурации на редактирование:
sudo vi /etc/php/7.0/fpm/php.ini
Раскомментируйте (уберите символ “;” в начале строки) следующую переменную и присвойте ей значение 0:
cgi.fix_pathinfo = 0
Сохраните изменения и выйдите из текстового редактора.
Перезапустите модуль:
sudo systemctl restart php7.0-fpm
Настройка Nginx
С помощью текстового редактора, например vi, откройте файл конфигурации веб-сервера nginx:
sudo vi /etc/nginx/sites-available/default
index index.php index.html index.htm index.nginx-debian.html;
В качестве значения параметра server_name укажите доменное имя или ip-адрес сервера:
server_name домен_или_IP_адрес;
Например:
server_name 125.221.12.11
Раскомментируйте следующие строки, которые отвечают за обработку PHP-запросов в nginx:
location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } location ~ /\.ht { deny all; }
В итоге, содержимое должно выглядеть следующим образом:
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 домен_или_IP_адрес; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } location ~ /\.ht { deny all; } }
Чтобы изменения стали актуальны, нужно заново запустить веб-сервер nginx:
service nginx restart
Запуск
Чтобы удостовериться в том, что LEMP поставлен без ошибок, можно создать test-page на VPS.
Создаем файл с нужным расширением:
vi /var/www/html/info.php
Внесите в него следующую строку и сохраните:
<?php phpinfo();?>
Затем сохранить и выйти.
Затем перейдите в браузере по следующей ссылке, указав IP-адрес вашего сервера: http://<IP-адрес_сервера>/info.php
Например: http://5.101.77.24/info.php
Ожидаемый результат: