Установка Nginx с PHP и MySQL (LEMP) плюс SSL в Debian Linux

LEMP - это аббревиатура, обозначающая следующий стек программного обеспечения: ядро Linux, веб-сервер Nginx, база данных MariaDB (или MySQL) и язык программирования PHP на стороне сервера. Это программное обеспечение сегодня широко используется на серверах в Интернете для создания динамических веб-сайтов или интерактивных веб-приложений.

Nginx - это современный и ресурсоэффективный веб-сервер, который активно развивается и является вторым по использованию веб-сервером в Интернете после HTTP-сервера Apache. Он особенно быстр, поскольку использует асинхронный, событийно-ориентированный подход к обработке запросов.

В этом руководстве показано, как установить и настроить стек LEMP (Nginx с MariaDB и PHP ) на последней версии Debian.

ТРЕБОВАНИЯ

  • Последняя версия операционной системы Debian , которую можно получить по следующей ссылке https://www.debian.org/CD/http-ftp/, установленная с нуля на VPS, виртуальной машине или непосредственно на выделенной машине.
  • Прямой доступ к консоли сервера или удаленное SSH-соединение.
  • Сетевой интерфейс, настроенный на статический IP-адрес машины.
  • Зарегистрированное публичное доменное имя с записями A и CNAME (www) DNS, настроенными на стороне сервера имен. В данном руководстве в качестве примера мы используем домен example.com.

Шаг 1: Начальная конфигурация

Первым шагом будет вход в систему с правами root или пользователя с правами root в вашей системе и обновление компонентов Debian 10 (обновление ядра, обновление пакетов и исправления безопасности), выполнив следующие команды.

Далее необходимо добавить описательное имя для имени хоста вашей машины, выполнив следующую команду. Затем необходимо перезагрузить систему, чтобы применить новое имя хоста.

Далее установите утилиты net-tools wget, curl и bash-completion, чтобы использовать их в дальнейшем для простого администрирования вашего сервера Debian.

Шаг 2: Установка веб-сервер Nginx

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

Установка веб-сервера Nginx

 

Как показано на изображении выше, менеджер пакетов apt проверит дополнительные зависимости для пакета и спросит вас, согласны ли вы продолжить процесс установки. Ответьте "да" (y), чтобы установить Nginx.

Далее выполните команду netstat для отображения сетевых сокетов в вашей системе и проверьте, прослушивает ли демон nginx порт 80/TCP. В качестве альтернативы можно выполнить команду systemctl, чтобы проверить состояние демона nginx, как показано на рисунке ниже.

Проверка службы nginx

После того как сервер nginx запущен и работает в вашей системе, введите команду ifconfig, чтобы отобразить информацию о сетевых интерфейсах и список IP-адресов вашей машины. Затем откройте браузер и посетите веб-страницу Nginx по умолчанию по протоколу HTTP, добавив IP-адрес в браузер. В окне браузера должно появиться сообщение "Wellcome to Nginx!".

http://www.example.com или IP адрес машины.

Как найти свой IP-адрес в Debian

 

Страница приветствия Nginx

Шаг 3: Включение протокола HTTP/2.0 в Nginx

По умолчанию последние версии двоичных файлов Nginx, предоставляемые репозиториями Debian, построены с использованием протокола HTTP/2.0. HTTP/2.0 интегрирован с протоколами TSL/SSL и может улучшить скорость загрузки веб-страниц благодаря защищённым транзакциям.

Все современные браузеры, такие как Chrome или Firefox, должны поддерживать этот протокол по умолчанию. Однако обратите внимание, что браузеры Microsoft Internet Explorer и Microsoft Edge пока не могут анализировать протокол http2.

Чтобы включить протокол HTTP/2.0 в Nginx на Debian 10, необходимо внести некоторые изменения в стандартный файл конфигурации Nginx или создать новый файл конфигурации и добавить блок кода TLS для серверов 443. Для этого сначала создайте резервную копию стандартной конфигурации Nginx sites-available, выполнив следующую команду. Убедитесь, что резервное копирование прошло успешно, просмотрев содержимое каталога sites-available.

Далее создайте файл конфигурации Nginx TLS с помощью текстового редактора и добавьте в него следующее содержимое.

содержимое файла default-ssl

Параметр, разрешающий использование протокола HTTP/2.0, представлено словом http2 из приведенной ниже строки.

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

Если у вас есть зарегистрированный домен или вы используете виртуальный хостинг на основе IP-адресов, вам следует добавить ваше доменное имя или IP-адрес после директивы server_name, как показано в примере ниже.

Настройка SSL в Nginx

В приведенном выше файле конфигурации TSL для nginx мы указали путь для сертификата и ключа TLS. Поскольку мы еще не установили ключи в вашей системе, введите следующую команду для генерации файла самоподписанного SSL сертификата и ключа. Во время генерации SSL-сертификата вам будет задан ряд вопросов. Введите двухзначный код вашей страны, штата или провинции, название вашего города, название вашей организации, название подразделения вашей организации, общее имя вашего сервера и действительный адрес электронной почты. Вы должны убедиться, что Общее имя совпадает с FQDN-записью вашего компьютера с DNS-сервера или IP-адресом вашего сервера, используемого для доступа к веб-сайту. Сертификат и ключ хранятся в новом каталоге в каталоге nginx под названием ssl, как показано на следующем снимке экрана.

Создание SSL сертификата

Также создайте новый сильный шифр Диффи-Хеллмана, который можно найти в вышеуказанном конфигурационном файле в строке оператора ssl_dhparam, выполнив следующую команду:

SSL-сертификат создан

Наконец, после генерации ключа Диффи-Хеллмана активируйте файл конфигурации TLS, создав символическую ссылку для файла конфигурации default-ssl из каталога sites-available в каталог sites-enabled, выполнив следующую команду.

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

Проверка nginx -t

Проверка успешности конфигурации SSL

Чтобы убедиться, что веб-сервер Nginx привязан к SSL-порту, выполните команду netstat и проверьте, отображается ли порт 443 в режиме прослушивания.

Приведенный ниже скриншот иллюстрирует описанные выше шаги.

Проверка службы с помощью netstat

Затем перейдите на доменное имя или IP-адрес вашего сервера по протоколу HTTP в браузере, чтобы отобразить страницу nginx по умолчанию. Поскольку вы используете самоподписанные сертификаты, в браузере должна появиться ошибка. Подтвердите ошибку, чтобы перейти на главную страницу nginx по умолчанию.

Предупреждение о самоподписанном SSL-сертификате

Если Nginx не предоставляет страницу index.html по умолчанию в каталоге webroot, выполните следующую команду для создания индексной страницы.

Тестовая страница

Чтобы подтвердить наличие протокола HTTP/2.0, рекламируемого Nginx, выполните следующую команду. Ищите слово h2 в протоколах, используемых сервером.

Проверка SSL-сертификата с помощью команды openssl

Вы также можете проверить состояние соединения и используется ли протокол http2 сервером Nginx из браузера Chrome, нажав функциональную клавишу F12 и запросив страницу. Для того чтобы показать протокол, используемый запросом, перейдите на вкладку Сеть, щелкните правой кнопкой мыши на меню Тип и отметьте пункт Протокол. Протокол HTTP2 должен отображаться как h2 в столбце Текущий протокол.

Шаг 4: Установка PHP

Веб-сервер Nginx может обслуживать динамический веб-контент с помощью интерпретатора языка программирования PHP через менеджер процессов PHP FastCGI, которому Nginx передает запросы для обработки. Менеджер процессов FastCGI можно получить, установив предварительно скомпилированный пакет php-fpm, предлагаемый официальными репозиториями Debian.

Чтобы установить менеджер процессов php-fpm и интерпретатор PHP в систему вместе с дополнительными пакетами, которые позволят PHP взаимодействовать с веб-сервером Nginx, выполните следующую команду на консоли вашего сервера:

Debian установка PHP

Запуск PHP-FPM

После успешной установки интерпретатора PHP 7.4 в системе запустите и проверьте демон php7.4-fpm, выполнив следующую команду:

В приведенном выше файле конфигурации TLS Nginx мы уже добавили блок конфигурации для менеджера процессов PHP FastCGI, чтобы обслуживать динамический контент. Блок кода, позволяющий Nginx использовать интерпретатор PHP, показан в приведенной ниже выдержке, поэтому дальнейшие шаги по изменению конфигурационного файла TSL Nginx не требуются. Знак хэштега # в начале строк на скриншоте ниже - это комментарии. Закомментированные строки из конфигурационных файлов по умолчанию игнорируются веб-сервером Nginx.

Тестовая конфигурация PHP

Для того чтобы протестировать и проверить, может ли Nginx корректно передавать php-файлы процессору PHP, создайте тестовый конфигурационный файл PHP info.php, выполнив следующую команду

Затем посетите страницу php info в вашем веб-браузере, перейдя на доменное имя вашего сервера или публичный IP-адрес, а затем /info.php, как показано на изображении ниже.

https://www.example.com/info.php

или

http://[ip адерс сервера]/info.php

Вы также можете проверить, рекламируется ли протокол HTTP/2.0 на сервере, найдя строку $_SERVER['SERVER_PROTOCOL'] в переменных PHP.

phpinfo();

Чтобы установить другие модули PHP, выполните команду apt search php, чтобы найти конкретный модуль PHP и установить его. Если вы планируете установить систему управления контентом, например, WordPress, то установите эти дополнительные модули:

Однако вновь установленные модули PHP не включены по умолчанию в вашей системе. Чтобы активировать их, перезапустите службу PHP-FPM.

Шаг 5: Установите базу данных MariaDB

Наконец, последний кусочек головоломки стека LAMP - база данных. Компонент LEMP базы данных MariaDB используется для хранения записей в таблицах и столбцах. Он будет динамически управлять данными веб-приложения. Чтобы установить MariaDB, выполните следующую команду в консоли вашего сервера. Затем перезапустите демон PHP FPM, чтобы включить модуль PHP-MySQL, который необходим для доступа к базе данных.

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

Установите пароль root в MariaDB

На следующем этапе убедитесь, что вы защитили MariaDB, выполнив сценарий безопасности mysql_secure_installation. Он поставляется в установочном пакете из репозиториев Debian. Во время выполнения скрипт задаст ряд вопросов, предназначенных для обеспечения безопасности базы данных MariaDB. Такие как: изменить пароль MySQL root, удалить анонимных пользователей, отключить удаленные логины root, удалить тестовую базу данных. Выполните скрипт, введя приведенную ниже команду. Ответьте "да" на все заданные вопросы, чтобы полностью обезопасить демон MySQL. Используйте приведенный ниже вывод скрипта только в качестве руководства.

Заключение

Вот и все! Веб-сервер Nginx, база данных MariaDB и язык программирования PHP установлены на вашей машине Debian. Теперь вы можете начать создавать динамические веб-сайты или веб-приложения для своих посетителей.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий