Как установить стек LEMP в Debian 12

debian logo Applications

В сфере разработки веб-приложений выбор подходящего программного стека может стать решающим фактором для успешного развертывания вашего приложения. Стек LEMP, аббревиатура которого образована от четырех компонентов с открытым исходным кодом - Linux, NGINX, MariaDB и PHP, является мощным, гибким и масштабируемым решением для управления веб-серверами.

lamp

Table of Contents

LAMP

В отличие от своего аналога LAMP (который использует Apache), стек LEMP использует NGINX для своей серверной функциональности. NGINX выделяется своей уникальной архитектурой, способной обрабатывать большое количество одновременных соединений. Это делает его эффективным выбором для сайтов с высокой посещаемостью, где требуется надежная обработка множества одновременных запросов.

NGINX предлагает мощный набор функций, включая балансировку нагрузки, обратный прокси, почтовый прокси и HTTP-кэш.
Его событийно-ориентированная архитектура позволяет более эффективно использовать процессор и память, особенно при высоких нагрузках.
Он предлагает прямую поддержку протоколов SSL/TLS, способствуя созданию безопасной веб-среды.

В качестве системы управления базами данных в стеке LEMP используется MariaDB. Эта реляционная система баз данных с открытым исходным кодом, разработанная авторами MySQL, обеспечивает высокую производительность, надежность и простоту использования.

MariaDB предлагает более широкий набор функций и механизмов хранения данных, чем MySQL.
Она обеспечивает превосходную репликацию с различными режимами и повышенной производительностью.
Ее приверженность философии открытого исходного кода и обратная совместимость с MySQL делает ее предпочтительным выбором среди многих разработчиков.

В сердце стека LEMP находится PHP-FPM (FastCGI Process Manager). Это продвинутая, высокоэффективная альтернативная реализация PHP FastCGI со значительными улучшениями по сравнению с mod_php, прежде всего, в способности обрабатывать высокие нагрузки.

PHP-FPM поддерживает пулы (рабочие, которые могут отвечать на запросы PHP) для выполнения этой задачи.
Он предоставляет различные функции управления, такие как адаптивное порождение процессов и возможность запуска рабочих с различными способностями.
Аспект FastCGI позволяет NGINX обрабатывать файлы PHP и обслуживать динамический контент, что значительно ускоряет работу PHP.

Развертывание стека LEMP - это не просто достижение работающей конфигурации; это использование возможностей каждого отдельного компонента для создания высокопроизводительной, безопасной и масштабируемой серверной среды, которая соответствует специфическим требованиям вашего веб-приложения.

В следующем руководстве мы рассмотрим шаги по установке стека LEMP на Debian 12 Bookworm, Debian 11 Bullseye или Debian 10 Buster, вооружив вас знаниями и шагами для получения максимальной отдачи от вашей серверной среды.

Установка NGINX - первого компонента стека LEMP

Шаг 1: Обновление системы Debian

Основой для успешной установки стека LEMP является актуальная операционная система. Убедиться в том, что ваша система Debian обновлена, очень важно для предотвращения конфликтов пакетов и обеспечения бесперебойного выполнения последующих процессов. Эта практика приводит вашу систему в соответствие с последними исправлениями безопасности и улучшениями программного обеспечения. Выполните следующую команду для обновления системы:

С помощью этой команды sudo apt update обновляет список доступных пакетов и их версии, а sudo apt upgrade устанавливает последние версии имеющихся пакетов.

Шаг 2: Установка NGINX

Краеугольным камнем стека LEMP является NGINX, который является нашей следующей целью установки. Выполнив следующую команду, будет установлен NGINX, высокопроизводительный HTTP-сервер и обратный прокси-сервер с открытым исходным кодом:

После завершения установки NGINX служба обычно запускается автоматически. Тем не менее, хорошей практикой является подтверждение этого и уверенность в том, что она работает так, как ожидается. Вы можете проверить состояние службы NGINX, выполнив следующую команду:

На этом этапе вы должны увидеть вывод, указывающий на активный (запущенный) статус службы NGINX, подтверждающий успешную инициацию NGINX.

Однако если сервер по какой-либо причине не запустился, следующая команда может запустить его, а также настроить NGINX на автоматический запуск при перезагрузке системы:

Эта команда гарантирует, что служба NGINX как включена для запуска при загрузке (enable), так и запущена немедленно (--now).

По желанию, вы можете посетить IP-адрес сервера, чтобы убедиться, что Nginx установлен.

Дальнейшее чтение

Для пользователей, заинтересованных в установке последней версии NGINX mainline или stable непосредственно из APT-репозитория NGINX, обратитесь к нашему подробному руководству: Установка NGINX Mainline на Debian Linux. Этот ресурс предлагает пошаговое руководство, вооружив вас информацией для дальнейшей оптимизации возможностей вашего сервера.

Включение MariaDB в стек LEMP

Процесс сборки стека LEMP продолжается установкой модуля базы данных. MariaDB имеет более высокую репутацию, чем MySQL в стеке LEMP, благодаря своей повышенной производительности и различным дополнительным атрибутам. Приведенные здесь пошаговые инструкции используют репозитории Debian для получения ресурсов MariaDB. Однако, если ваши требования направлены на использование версии, отличной от официальных библиотек MariaDB.org.

Шаг 1: Начало установки MariaDB

Инициация установки MariaDB включает в себя выполнение простой команды в терминале. Вот она:

Шаг 2: Проверка службы MariaDB после установки

После установки MariaDB следующим важным шагом будет подтверждение статуса службы MariaDB. Подобно тому, как это было сделано для веб-сервера NGINX, очень важно убедиться, что служба MariaDB включена и работает правильно, без каких-либо неисправных компонентов. Команда для проверки состояния службы выглядит следующим образом:

В случае, если сервер не был активирован, вы можете выполнить следующую команду. Это обеспечит не только немедленный запуск MariaDB, но и автоматическую загрузку при каждой перезагрузке системы.

Шаг 3: Защита установки MariaDB

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

Вы можете запустить сценарий безопасности MariaDB, а именно mysql_secure_installation, выполнив следующую команду:

После выполнения сценария безопасности последующий шаг включает в себя настройку различных параметров. Эти изменения включают в себя настройку пароля root, ограничение удаленного доступа, удаление анонимных учетных записей пользователей и удаление тестовой базы данных. Каждая настройка добавляет уровень безопасности к вашей установке MariaDB и помогает предотвратить потенциальные угрозы безопасности.
Обеспечение безопасности установки MariaDB: Подробное описание

Определение отправной точки

Когда вы начинаете повышать безопасность вашей MariaDB, нередко поначалу вы чувствуете себя подавленным. Однако скрипт mysql_secure_installation - ваш неизменный союзник в этом деле, который методично проведет вас через лабиринт конфигураций. Давайте разберем каждый шаг этого процесса, чтобы получить полное представление об этом путешествии.

В самом начале сценарий требует ввести текущий пароль root. В случае совершенно новой установки MariaDB вам не нужно беспокоиться; достаточно простого нажатия клавиши Enter, чтобы продолжить процесс настройки.

Активация аутентификации Unix_Socket

Двигаясь дальше, вы столкнетесь с точкой принятия решения. Сценарий предлагает включить аутентификацию unix_socket. Набрав 'Y' и нажав клавишу ENTER, вы выражаете свое согласие с этим предложением, возводя непроницаемый брандмауэр. Этот брандмауэр стоит непоколебимо, гарантируя, что ни один субъект не сможет получить доступ к домену корневого пользователя MariaDB без необходимых разрешений.

Укрепление защиты: Смена пароля корневого пользователя

По мере продолжения процесса вам представится возможность укрепить свою защиту, изменив пароль корневого пользователя. Если вы решите усилить защиту, подтвердите свой выбор, набрав 'Y' и нажав клавишу ENTER. Более надежный пароль означает усиление защиты от потенциальных злоумышленников.

Искоренение фантомных пользователей

Продвигаясь дальше, сценарий задает вопрос об устранении анонимных пользователей. Эти призрачные сущности, если оставить их без внимания, могут потенциально внести уязвимости в вашу производственную среду. Набрав 'Y' и нажав клавишу ENTER, вы решите изгнать этих фантомов, тем самым повысив безопасность вашей установки.

Запрет удаленного входа с root

Далее вам предлагается запретить удаленный вход в систему root. Эта мера, способствующая повышению безопасности, предотвращает попытки внешних субъектов угадать пароль root по сети. Введите 'Y', а затем клавишу ENTER, чтобы применить эту меру предосторожности.

Очистка тестовой базы данных

По мере приближения к концу пути сценарий предлагает вам удалить тестовую базу данных, доступную всем. Эта база данных, если не принять меры, может стать лазейкой безопасности в производственной среде. Набрав "Y" и нажав клавишу ENTER, вы выбираете следующее

Установка PHP и PHP-FPM - неотъемлемая часть стека LEMP

Последним компонентом стека LEMP является служба PHP, выступающая в качестве моста между Nginx и MariaDB. Это соединение осуществляется службой PHP-FPM в сочетании с дополнительными модулями, необходимыми для phpMyAdmin. Если вы предпочитаете установить другую версию PHP, вы можете следовать нашему руководству по установке PHP в Debian Linux, в котором описана установка конкретной версии PHP в соответствии с вашими потребностями.

Шаг 1: Установка PHP и PHP-FPM

Чтобы установить PHP, PHP-FPM и необходимые модули на систему Debian, выполните следующую команду в терминале:

Шаг 2: Проверка состояния службы PHP

После установки очень важно подтвердить статус службы PHP. Эта проверка аналогична той, что вы делали для MariaDB: убедитесь, что PHP включен и работает безупречно и без ошибок. Команда зависит от версии установленного PHP; в нашем случае это был PHP 8.2.

Шаг 3: Активация службы PHP

Если служба PHP еще не активирована, выполните следующую команду, чтобы включить ее и обеспечить автоматический запуск при каждой перезагрузке системы.

Эта команда активирует службу PHP-FPM и обеспечит ее автоматический запуск при каждой загрузке системы.

Интеграция PHP-FPM с серверным блоком Nginx

Чтобы Nginx мог эффективно взаимодействовать с PHP, необходимо изменить конфигурационный файл серверного блока Nginx. Эти изменения подскажут Nginx, как взаимодействовать с PHP-FPM, обеспечивая эффективную обработку файлов PHP.

Шаг 1: Модификация серверного блока Nginx

Найдите файл блока сервера Nginx и добавьте в него следующие строки:

Приведенная выше конфигурация позволяет Nginx передавать PHP-запросы службе PHP-FPM. Строка fastcgi_pass указывает на сокет Unix, используемый службой PHP-FPM.

Шаг 2: Проверка конфигурации Nginx

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

Эта команда проверяет всю конфигурацию Nginx на наличие синтаксических ошибок. Если ошибки обнаружены, она выводит их, позволяя вам немедленно исправить их.

Шаг 3: Перезапуск службы Nginx

После успешной проверки следующим шагом будет перезапуск службы Nginx. Этот шаг гарантирует, что все изменения, внесенные в конфигурационный файл, вступят в силу:

Эта команда перезагрузит службу Nginx, и вместе с ней новый интегрированный PHP-FPM начнет взаимодействовать с Nginx.

Создание тестовой посадочной страницы

Подготовка к тестированию

Чтобы убедиться в правильности настроек конфигурации Nginx и PHP-FPM, рекомендуется создать образец тестового сайта. Следующие инструкции помогут вам создать простой файл index.html для целей тестирования.

Создание веб-каталога

Если вы еще не сделали этого, вам необходимо создать веб-каталог. В этом каталоге будут храниться файлы вашего сайта. Давайте создадим каталог с именем example.com в каталоге /var/www/html/:

Настройка разрешений

Теперь вам нужно изменить права доступа к каталогу. Переменная $USER может быть использована для установки права собственности на каталог для текущего пользователя, вошедшего в систему:

Чтобы обеспечить публичный доступ к веб-каталогу (позволяющий пользователям посещать ваш сайт), установите разрешения с помощью chmod 755:

Создание тестового HTML-файла

Далее создайте базовый файл index.html:

Вставьте в файл следующее содержимое. Эта базовая структура HTML предназначена исключительно для тестирования.

Сохраните файл с помощью CTRL+O, а затем выйдите с помощью CTRL+X.

Активация серверного блока Nginx

Когда вы приближаетесь к завершению, пришло время активировать файл конфигурации серверного блока. Вам нужно создать символическую ссылку (symlink) для файла конфигурации серверного блока из каталога sites-available в каталог sites-enabled с помощью следующей команды:

Проверка блока сервера Nginx

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

Если все в порядке, вы должны увидеть следующие сообщения, указывающие на успешную проверку синтаксиса и конфигурации:

Наконец, откройте веб-браузер и введите адрес вашего домена (в данном случае example.com), чтобы проверить, доступен ли ваш сервер.

Повышение безопасности LEMP с помощью SSL-сертификата Let’s Encrypt

Одним из важнейших шагов по укреплению безопасности вашего сервера и созданию доверия у пользователей является установка SSL-сертификата для вашего сайта. Это позволит запустить ваш сервер Nginx по протоколу HTTPS, обеспечивая зашифрованный канал между вашим сервером и пользователями.

Для этого мы будем использовать Let's Encrypt, инициативу некоммерческой организации Internet Security Research Group (ISRG), которая предоставляет бесплатные автоматические SSL-сертификаты.

Установка Certbot

Чтобы начать настройку SSL-сертификата, необходимо установить пакет certbot. Эта утилита упрощает получение и развертывание SSL-сертификатов от Let's Encrypt. Используйте следующую команду для установки certbot:

Генерация и развертывание SSL-сертификата

После успешной установки certbot вы можете приступить к созданию SSL-сертификата. Выполните следующую команду, чтобы сгенерировать и применить SSL-сертификат к вашему серверу Nginx:

Эта команда включает в себя несколько функций и параметров:

  • --nginx: Указывает, что certbot должен автоматически настроить Nginx для SSL.
  • --agree-tos: Этот параметр указывает на ваше согласие с условиями обслуживания Let's Encrypt.
  • --redirect: Указывает certbot установить 301 редирект с HTTP на HTTPS.
  • --hsts: Включает заголовок HTTP Strict Transport Security (HSTS), который предписывает браузерам всегда использовать HTTPS.
  • --staple-ocsp: Этот флаг включает OCSP Stapling, метод, с помощью которого сервер периодически запрашивает серверы эмитента сертификата для получения подписанной, отмеченной временем записи о статусе сертификата.

Пожалуйста, не забудьте заменить [email protected] и www.example.com на ваш адрес электронной почты и доменное имя соответственно.

С этими настройками ваш сайт теперь доступен через https://www.example.com вместо небезопасного http://www.example.com. Любые попытки получить доступ к вашему сайту по протоколу HTTP будут автоматически перенаправляться на версию HTTPS, обеспечивая безопасность соединения в любое время.

Заключение

Установка стека LEMP на дистрибутив Debian Linux - это систематический и хорошо документированный процесс. На протяжении всех шагов нам удалось установить Nginx в качестве веб-сервера, MariaDB в качестве сервера баз данных и PHP для динамической обработки веб-контента. Кроме того, мы защитили наш серверный блок с помощью SSL-сертификата Let's Encrypt. Это формирует комплексную и безопасную среду для размещения различных веб-приложений.

Уделять время тщательному изучению каждого компонента в стеке LEMP очень важно. Это не только повысит ваши навыки системного администратора, но и позволит эффективно устранять неполадки при возникновении проблем. Помните, что модульность стека LEMP - это его сильная сторона. Каждый компонент может быть адаптирован и оптимизирован под конкретные нужды вашего проекта.

Avatar for Gnostis
Gnostis
Добавить комментарий