В данном руководстве рассматривается процесс установки Nginx, MariaDB и PHP7.3 на Debian 10 Buster, образуя стек LEMP. Программный стек представляет собой набор инструментов, работающих совместно. LEMP включает в себя Linux, Nginx, MariaDB/MySQL и PHP — все это открытые и бесплатные программные решения. Этот стек широко используется для поддержки динамических веб-сайтов и приложений. Linux служит операционной системой, Nginx выполняет функции веб-сервера, MariaDB/MySQL — это сервер баз данных, а PHP является серверным языком сценариев, который создает динамические веб-страницы.
Все четыре элемента доступны бесплатно и имеют открытый исходный код. Тем не менее, учитывая, что MySQL сейчас под контролем Oracle, существует вероятность его перехода на закрытый исходный код. Поэтому мы предпочтем использовать MariaDB вместо MySQL.
Содержание статьи
- 1 Начальные требования для установки стека LEMP на Debian 10 Buster.
- 2 Обновите установленные программные пакеты.
- 3 Установите Nginx на операционной системе Debian 10.
- 4 Инсталляция сервера базы данных MariaDB на Debian 10.
- 5 Установка PHP7.3 на Debian 10 — четвертый этап процесса настройки сервера, требующий выполнения ряда шагов для успешной интеграции новой версии PHP с операционной системой Debian 10.
- 6 Настройка блока сервера Nginx
- 7 Автоматическое перезапускание Nginx
- 8 Заключение
Начальные требования для установки стека LEMP на Debian 10 Buster.
Для выполнения данного руководства вам потребуется операционная система Debian 10, установленная на вашем локальном компьютере или удаленном сервере.
Если вас интересует VPS (виртуальный частный сервер), вы можете открыть учетную запись на Vultr по этой уникальной ссылке и получить $50 в качестве бесплатного кредита (предложение доступно только новым пользователям). Если вам необходимо настроить стек LEMP с доменным именем, советую приобретать домены на NameCheap, так как там низкие цены и защита конфиденциальности whois предоставляется бесплатно на постоянной основе.
Обратите внимание, что для установки программ на Debian необходимы права администратора. Вы можете использовать sudo перед командой или переключиться на пользователя root с помощью команды su -.
Обновите установленные программные пакеты.
Прежде чем установить стек LEMP, рекомендуется обновить репозиторий и пакеты программного обеспечения. Для этого выполните следующую команду на вашей системе Debian 10.
sudo apt update sudo apt upgrade
Установите Nginx на операционной системе Debian 10.
Nginx — это мощный веб-сервер, который на сегодняшний день пользуется большой популярностью. Он также может функционировать в качестве обратного прокси-сервера и сервера кэширования. Для установки веб-сервера Nginx введите следующую команду.
sudo apt install nginx

После установки Nginx он должен запуститься автоматически. Проверьте его состояние с помощью команды systemctl.
systemctl status nginx
●nginx.service - Это мощный веб-сервер и сервер обратного проксирования. Статус: загружен (/lib/systemd/system/nginx.service; активирован; предустановленный поставщиком: en). Текущий статус: активен.деятельный (функционирует) с Сб 2019-08-10 06:20:26 UTC; 54 сек. назад Документы: man:nginx(8) Основной PID: 19713 (nginx) Задачи: 2 (лимит: 1149) Память: 4.6M CGroup: /system. slice/nginx.service ├─19713 nginx: главный процесс /usr/sbin/nginx - g daemon on; master_pr └─19714 nginx: рабочий процесс
Совет: Если команда не завершилась сразу, нажмите клавишу Q, чтобы вернуть управление окном терминала.
Если он не функционирует, примените команду systemctl для его запуска.
sudo systemctl start nginx
Полезно настроить Nginx для автоматического запуска при загрузке системы.
sudo systemctl enable nginx
Убедитесь в текущей версии Nginx:
sudo nginx - v
nginx version: nginx/1.14.2
Теперь введите публичный IP-адрес вашего сервера на Debian 10 в адресной строке браузера. Вы должны увидеть стандартную страницу «Добро пожаловать в nginx», что подтвердит корректную работу веб-сервера Nginx. Если вы устанавливаете LEMP на локальном компьютере с Debian 10, введите 127.0.0.1 или localhost в адресной строке.

Если подключение не удалось установить или было отклонено, возможно, причиной является брандмауэр, блокирующий входящие запросы на TCP-порт 80. Если вы используете брандмауэр iptables, необходимо выполнить следующую команду для открытия TCP-порта 80.
sudo iptables - I INPUT - p tcp --dport 80 - j ACCEPT
Если вы применяете брандмауэр UFW, введите следующую команду для разблокировки TCP-порта 80.
sudo ufw allow http
Теперь необходимо сделать www-data (пользователь Nginx) владельцем корневого документа, известного также как веб-корень. По умолчанию этот документ принадлежит пользователю root. Следует отметить, что Nginx использует /usr/share/nginx/html/ в качестве своего веб-корня, тогда как Apache — /var/www/html/.
sudo chown www-data:www-data /usr/share/nginx/html/ - R
Инсталляция сервера базы данных MariaDB на Debian 10.
MariaDB служит альтернативой MySQL. Чтобы установить её на Debian 10, введите следующую команду.
sudo apt install mariadb-server mariadb-client
После установки сервера MariaDB он должен запуститься автоматически. Для проверки его состояния воспользуйтесь командой systemctl.
systemctl status mariadb
●mariadb.service - Служба базы данных MariaDB версии 10.3.15. Загружена: загружена (/lib/systemd/system/mariadb.service; активирована; предустановка от поставщика: Статус: активен.деятельно (функционирует) с субботы, 2019-08-10 06:38:58 UTC; 13 секунд назад Документы: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Основной PID: 20669 (mysqld) Статус: "Принимаю ваши SQL-запросы сейчас." Задачи: 31 (лимит: 1149) Память: 77.7M CGroup: /system. slice/mariadb.service └─20669 /usr/sbin/mysqld
Если он не функционирует, активируйте его с помощью следующей команды:
sudo systemctl start mariadb
следующие шаги: настройте автозагрузку MariaDB для автоматического запуска системы.
sudo systemctl enable mariadb
Выполните скрипт безопасности сразу после завершения установки.
sudo mysql_secure_installation
При запросе ввода пароля root для MariaDB просто нажмите клавишу Enter, так как пароль пока не задан. После этого введите y, чтобы задать новый пароль root для сервера MariaDB.

Теперь вы можете просто нажать клавишу Enter, чтобы ответить на все последующие вопросы. Это действие приведет к удалению анонимного пользователя, отключению удаленного доступа для пользователя root и удалению тестовой базы данных. Этот процесс является важным шагом для повышения безопасности базы данных MariaDB. (Учтите, что буква Y написана заглавной, что указывает на то, что это ответ по умолчанию.)

По умолчанию в Debian пакет MariaDB применяет unix_socket для аутентификации пользователей. Это значит, что вы можете использовать свои учетные данные операционной системы для доступа к консоли MariaDB. В результате, вы можете выполнить следующую команду для входа без необходимости вводить пароль пользователя root MariaDB.
sudo mariadb - u root
sudo mysql - u root
exit;
Убедитесь в актуальности сведений о версии сервера MariaDB.
mariadb --version
mariadb Ver 15.1 Distrib 10.3.15-MariaDB, для debian-linux-gnu (x86_64) с использованием readline 5.2
Установка PHP7.3 на Debian 10 — четвертый этап процесса настройки сервера, требующий выполнения ряда шагов для успешной интеграции новой версии PHP с операционной системой Debian 10.
На момент написания этой статьи последней стабильной версией PHP является PHP 7.3, которая предлагает незначительные улучшения производительности по сравнению с предыдущими релизами. Чтобы установить PHP 7.3 и несколько популярных расширений из репозитория Debian 10, выполните следующую команду.
sudo apt install php7.3 php7.3-fpm php7.3-mysql php-common php7.3-cli php7.3-common php7.3-json php7.3-opcache php7.3-readline
Проверите текущую версию PHP на сервере.
php --version
PHP 7.3.4-2 (cli) (собран: 13 апр 2019 19:05:48) ( NTS ) Авторские права (c) 1997-2018 The PHP Group Zend Engine v3.3.4, Авторские права (c) 1998-2018 Zend Technologies с Zend OPcache v7.3.4-2, Авторские права (c) 1999-2018, Zend Technologies
Теперь активируйте php7.3-fpm.
sudo systemctl start php7.3-fpm
Активируйте автоматический запуск при старте системы.
sudo systemctl enable php7.3-fpm
systemctl status php7.3-fpm
Настройка блока сервера Nginx
Блок сервера Nginx выполняет аналогичную функцию виртуального хоста в Apache. Мы не будем применять блок сервера по умолчанию, поскольку он не предназначен для обработки PHP-кода, и любые изменения могут вызвать проблемы. Поэтому рекомендуется удалить символическую ссылку по умолчанию из каталога sites-enabled с помощью следующей команды. (При этом он останется доступным по адресу /etc/nginx/sites-available/default.)
sudo rm /etc/nginx/sites-enabled/default
Далее откройте новый файл конфигурации для блока сервера в директории /etc/nginx/conf.d/ с помощью текстового редактора, например, Nano.
sudo nano /etc/nginx/conf.d/default.conf
Поместите указанный текст в файл. Этот фрагмент позволит Nginx принимать запросы на IPv4 и IPv6 порту 80, используя универсальное имя сервера.
<

Автоматическое перезапускание Nginx
В случае, если процесс Nginx был остановлен по какой-либо причине, вам следует выполнить следующую команду для его повторного запуска.
sudo systemctl restart nginx
Чтобы избежать ручного ввода этой команды, мы можем настроить автоматический перезапуск Nginx, изменив системный юнит nginx.service в systemd. Для изменения стандартной конфигурации системной службы необходимо создать отдельный каталог.
sudo mkdir - p /etc/systemd/system/nginx.service.d/
После этого создайте документ в данном каталоге.
sudo nano /etc/systemd/system/nginx.service.d/restart.conf
Включите в файл следующие строки, чтобы Nginx автоматически перезапускался через 5 секунд после выявления ошибки.
[Service] Restart=always RestartSec=5s
Сохраните изменения в файле и закройте его. После этого выполните перезагрузку systemd.
sudo systemctl daemon-reload
Для того чтобы убедиться в этом, остановите Nginx, используя команду:
sudo pkill nginx
После этого убедитесь в статусе Nginx. Вы заметите, что он перезапустился автоматически.
systemctl status nginx
Заключение
Поздравляю! Вы успешно завершили установку Nginx, MariaDB и PHP 7.3 на Debian 10 Buster. Для повышения безопасности вашего сервера рекомендуется удалить файл info.php, чтобы защитить его от ненужных наблюдателей.
sudo rm /usr/share/nginx/html/info.php
Надеюсь, данный урок оказался полезным для установки стека LEMP на Debian 10 Buster. Как и прежде, если вам понравилась эта статья, не забудьте подписаться на нашу бесплатную рассылку, чтобы не пропустить новые материалы.

