Установка стека LEMP в Debian 9

Стек LEMP – это группа программ, предназначенная для обслуживания динамических веб-страниц и веб-приложений. Этот акроним расшифровывается как Linux (операционная система), Nginx (веб-сервер), MySQL (система управления базами данных) и PHP (серверный язык сценариев для обработки динамического контента).

Данный мануал научит устанавливать все компоненты стека LEMP на сервер Debian 9. Поскольку сервер использует операционную систему Debian, первый компонент уже установлен. Мануал поможет вам установить остальное.

Требования

Для работы вам понадобится сервер Debian 9, настроенный по этому мануалу.

1: Установка Nginx

Для отображения веб-страниц в этом стеке используется современный и производительный веб-сервер Nginx.

Все программное обеспечение, необходимое для установки веб-сервера, находится в стандартных репозиториях системы.

Поскольку это первое взаимодействие с системой пакетирования apt в текущей сессии, нужно обновить индекс пакетов. После этого можно установить Nginx

sudo apt update
sudo apt install nginx

В системе Debian 9 веб-сервер Nginx запускается автоматически после установки.

Если ране вы настроили брандмауэр, нужно разрешить соединения сервиса Nginx. Во время установки Nginx регистрируется как сервис в ufw, потому разрешить трафик веб-сервера очень просто.

Рекомендуется выбрать наиболее строгий профиль веб-сервера. Однако, поскольку на сервере ещё не настроен SSL, мы можем настроить только порт 80.

Чтобы включить этот профиль, введите:

sudo ufw allow 'Nginx HTTP'

Убедитесь в том, что профиль включен:

sudo ufw status

Команда должна сообщить, что трафик HTTP разрешен:

Status: active
To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx HTTP                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Добавив новое правило брандмауэра, можно проверить, работает ли сервер. Попробуйте открыть стандартную посадочную страницу в браузере. Эта страница доступна по доменному имени или IP-адресу.

Если вы не знаете своего IP-адреса, вы можете узнать его с помощью командной строки. Введите:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Команда вернёт несколько строк. Проверьте каждый адрес в браузере.

Узнав свой IP, введите его в браузер, чтобы убедиться, что веб-сервер работает должным образом.

http://server_domain_or_IP

На экране должна появиться стандартная посадочная страница Nginx:

Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

2: Установка MySQL

Теперь нужно установить MySQL, систему управления базами данных, которая будет хранить и систематизировать данные сайта.

Чтобы установить MySQL, введите:

sudo apt install mysql-server

Примечание: В Debian 9 по умолчанию в качестве альтернативы используется разработанный сообществом форк проекта MySQL — MariaDB. MariaDB хорошо работает в большинстве случаев, но если вам нужны функции, доступные только в Oracle MySQL, вы можете установить и использовать пакеты из репозитория, поддерживаемого разработчиками MySQL. Чтобы установить официальный сервер MySQL, читайте мануал Установка последней версии MySQL в Debian 9.

После установки MySQL требует настройки.

Чтобы защитить установку, можно запустить простой скрипт безопасности, который удалит потенциально рискованные настройки. Инициируйте скрипт:

sudo mysql_secure_installation

Система предложит ввести root пароль MySQL. Пока что у вас нет такого пароля, потому можно просто нажать Enter. Затем вам будет предложено выбрать пароль root. Нажмите у и выберите пароль.

На остальные вопросы можно нажать Y и Enter. Это удалит анонимных пользователей и тестовые базы данных, отключит удалённый root логин и обновит текущие настройки MySQL.

3: Установка PHP

PHP – это серверный язык сценариев для создания динамических страниц.

Nginx не поставляется с поддержкой PHP, в отличие от других веб-серверов. Потому нужно установить php-fpm (fastCGI process manager). Так Nginx сможет передавать PHP-запросы на обработку. Установите модуль и вспомогательный пакет, необходимый для взаимодействия PHP с БД.

sudo apt install php-fpm php-mysql

4: Настройка Nginx для поддержки PHP

Все компоненты стека установлены. Теперь нужно настроить взаимодействие Nginx и PHP.

Для этого нужно отредактировать блок server (виртуальный хост). Мы оставим конфигурацию Nginx по умолчанию без изменений, создадим новый файл конфигурации и новый корневой каталог для хранения файлов PHP. Файл конфигурации и каталог должен называться так же, как домен или хост, для которого он предназначен.

Создайте новый каталог в /var/www для файлов сайта:

sudo mkdir /var/www/your_domain

Затем откройте конфигурационный файл в каталоге sites-available:

sudo nano /etc/nginx/sites-available/your_domain

Вы увидите пустой файл. Вставьте в него такие строки:

server {
listen 80;
listen [::]:80;
root /var/www/your_domain;
index index.php index.html index.htm;
server_name your_domain;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
}

Это очень простая конфигурация, которая прослушивает порт 80 и обслуживает файлы из только что созданного каталога. Она будет отвечать только на запросы к имени, указанному в server_name. Любые файлы, оканчивающиеся на .php, будут обрабатываться процессом php-fpm до того, как Nginx отправит результаты пользователю.

Сохраните и закройте файл.

Активируйте свою конфигурацию, создав симлинк из каталога sites-enabled:

sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/

Теперь Nginx сможет использовать конфигурацию при следующей перезагрузке. Сначала проверьте вашу конфигурацию на наличие синтаксических ошибок:

sudo nginx -t

Если команда найдет какие-то ошибки, вернитесь и перепроверьте файл, прежде чем продолжить.

Когда ошибок не останется, перезагрузите Nginx, чтобы внести изменения в настройку:

sudo systemctl reload nginx

5: Тестирование установки

Теперь установка стека LEMP полностью завершена. Убедитесь, что веб-сервер успешно обслуживает файлы PHP.

Для этого нужно создать тестовый файл info.php в каталоге document root.

sudo nano /var/www/your_domain/info.php

Вставьте в него следующий код:

<?php
phpinfo();

Сохраните и закройте файл.

Теперь попробуйте открыть его в браузере:

http://your_server_domain_or_IP/info.php

На экране появится страница, содержащая информацию о сервере. Если такая страница появилась, Nginx правильно обслуживает файлы PHP.

После проверки обязательно удалите этот файл, иначе любой пользователь сможет получить доступ к конфиденциальным данным о сервере.

sudo rm /var/www/html/info.php

Заключение

Теперь на сервере Debian установлен программный стек LEMP – надёжная и гибкая платформа для развёртывания сайта или приложения. На этом этапе можно приступать к дальнейшей настойке сервера. Например, вы можете зашифровать соединения с вашим сервером. Для этого можно зашифровать установку Nginx с помощью сертификата Let’s Encrypt. Следуя этому мануалу, вы получите бесплатный сертификат TLS/SSL для своего сервера, что позволит ему обслуживать контент через HTTPS.

Tags: , , ,