NGINX, высокопроизводительный веб-сервер с открытым исходным кодом, славится своей стабильностью, низким потреблением ресурсов и способностью обслуживать динамический веб-контент. Он также способен обрабатывать большие нагрузки и работать в качестве обратного прокси. В данном руководстве вы узнаете, как собрать NGINX из исходных кодов в Debian 12, 11 и 10 и получить оптимизированный веб-сервер.
Зачем собирать NGINX из исходных текстов?
Сборка NGINX из исходных текстов имеет множество преимуществ:
- Гибкость: Приспособление программного обеспечения к вашим конкретным потребностям, что позволяет создать действительно индивидуальную конфигурацию.
- Контроль: Полный контроль над программным обеспечением, постоянное обновление и безопасность.
- Производительность: Оптимизация программного обеспечения под конкретную среду и аппаратное обеспечение, что повышает производительность.
- Совместимость: Добавление и удаление модулей по мере необходимости, что обеспечивает бесшовную интеграцию с другим программным обеспечением и технологиями в вашем стеке.
- Безопасность: Применение исправлений и обновлений безопасности сразу после выхода, что повышает безопасность сервера и сайта.
Шаг 1: Обновление и модернизация Debian
Прежде чем приступать к процессу установки, убедитесь, что ваша система Debian обновлена. Этого можно добиться, выполнив в терминале следующие команды:
1 2 | sudo apt update sudo apt upgrade |
Эти команды получат список доступных обновлений и затем обновят систему, обеспечив работу с новейшим программным обеспечением.
Шаг 2: Установка необходимых зависимостей
Для компиляции NGINX необходимо установить некоторые зависимости. Эти зависимости необходимы для процесса сборки. Для их установки выполните следующую команду:
1 | sudo apt install build-essential libpcre3-dev libssl-dev zlib1g-dev libgd-dev |
Шаг 3: Загрузка исходного кода NGINX
После установки необходимых зависимостей на следующем этапе необходимо загрузить исходный код NGINX. Посетите сайт NGINX и выберите версию, наиболее подходящую для ваших нужд. Вы можете выбрать последнюю основную, стабильную или любую другую версию. Для загрузки выбранной версии используйте команду wget:
1 | wget http://nginx.org/download/nginx-x.x.x.tar.gz |
Замените x.x.x на номер версии. Например, для загрузки последней основной версии, 1.25.1, выполните следующее:
1 | wget https://nginx.org/download/nginx-1.25.1.tar.gz |
Шаг 4: Извлечение исходного кода
Исходный код поставляется в виде сжатого tar-шара. Чтобы использовать его, необходимо извлечь. Выполните следующую команду:
1 | tar -xzvf nginx-1.25.1.tar.gz |
Затем перейдите в только что распакованный каталог:
1 | cd nginx-1.25.1 |
Шаг 5: Настройка параметров NGINX
На этом шаге настраиваются параметры сборки NGINX из исходных текстов. Это включает в себя указание путей и модулей, которые необходимо включить в сборку NGINX. Вот команда, которую вы будете использовать:
1 | ./configure --prefix=/var/www/html --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --with-pcre --lock-path=/var/lock/nginx. lock --pid-path=/var/run/nginx.pid --with-http_ssl_module --with-http_image_filter_module=dynamic --modules-path=/etc/nginx/modules --with-http_v2_module --with-http_v3_module --with-stream=dynamic --with-http_addition_module --with-http_mp4_module |
Эта команда может показаться сложной, но это просто список опций, которые указывают скрипту ./configure, как подготовить makefile для сборки NGINX. Давайте разберем некоторые из ключевых компонентов:
- --prefix=/var/www/html: Здесь задается корневой каталог для установки. Все относительные пути будут исходить из этого места.
- --sbin-path=/usr/sbin/nginx: Здесь указывается место установки исполняемого файла nginx.
- --conf-path=/etc/nginx/nginx.conf: Указывает местоположение основного конфигурационного файла NGINX.
- --http-log-path=/var/log/nginx/access.log и --error-log-path=/var/log/nginx/error.log: Эти опции задают расположение файлов журналов доступа и ошибок соответственно.
- --with-pcre: Включает использование библиотеки PCRE (Perl Compatible Regular Expressions), которая позволяет NGINX обрабатывать регулярные выражения в конфигурационных файлах.
- --lock-path=/var/lock/nginx.lock и --pid-path=/var/run/nginx.pid: Эти опции задают расположение файлов nginx.lock и nginx.pid соответственно. Файл lock используется для предотвращения одновременного изменения конфигурационного файла, а файл pid хранит идентификатор запущенного главного процесса NGINX.
- --with-http_ssl_module: Включает модуль SSL для безопасных соединений.
- --with-http_image_filter_module=dynamic: Включает модуль фильтрации изображений, который позволяет NGINX преобразовывать изображения на лету.
- --modules-path=/etc/nginx/modules: Устанавливает путь, по которому будут храниться динамические модули.
- --with-http_v2_module: Включает модуль HTTP/2, который позволяет NGINX поддерживать протокол HTTP/2.
- --with-stream=dynamic: Включает динамически модуль stream, что обеспечивает возможность работы с TCP/UDP-потоками.
- --with-http_addition_module и --with-http_mp4_module: Включают модули добавления и MP4 соответственно. Модуль добавления позволяет возвращать клиенту более одного ответа, а модуль MP4 обеспечивает возможность потоковой передачи данных в формате MP4.
Приведенная выше команда предназначена для пользователей, использующих Mainline-версию NGINX, которая теперь включает в себя модуль HTTP/3. Если вы не хотите использовать модуль HTTP/3, вы можете удалить его из команды.
- --with-http_v3_module: Включает модуль HTTP/3, который позволяет NGINX поддерживать протокол HTTP/3. HTTP/3 - это третья основная версия протокола передачи гипертекста, который используется для обмена двоичной информацией во Всемирной паутине. Она значительно превосходит HTTP/2 по производительности, особенно в части задержек и лучшей обработки потерь пакетов. Включение этого модуля позволит вашему серверу NGINX обрабатывать запросы HTTP/3, обеспечивая пользователям более быструю и надежную работу в Интернете.
Шаг 6: Установка NGINX (компиляция и сборка NGINX)
После настройки параметров сборки NGINX из исходных текстов настало время компиляции и установки NGINX. Этот процесс состоит из двух этапов:
Сначала команда make компилирует исходный код NGINX с использованием опций, указанных в сценарии ./configure. После этого создается двоичный исполняемый файл NGINX:
1 | make |
Во-вторых, команда sudo make install устанавливает двоичный файл NGINX, файлы конфигурации и другие файлы по пути с префиксом, указанному в сценарии ./configure:
1 | sudo make install |
После установки NGINX будет находиться в каталоге sbin префиксного пути.
Шаг 7: Создание службы NGINX SystemD
После сборки и компиляции NGINX из исходных текстов необходимо создать процесс systemd для управления службой NGINX в вашей системе. Вот как это сделать:
Создайте новый файл службы systemd:
1 | sudo nano /etc/systemd/system/nginx.service |
Добавьте в файл следующее содержимое:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [Unit] Description=The NGINX HTTP and reverse proxy server After=syslog.target network-online.target remote-fs.target nss-lookup.target Wants=network-online.target [Service] Type=forking PIDFile=/var/run/nginx.pid ExecStartPre=/usr/sbin/nginx -t ExecStart=/usr/sbin/nginx ExecReload=/usr/sbin/nginx -s reload ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target |
Перезагрузите демон systemd:
1 | sudo systemctl daemon-reload |
Запустите службу NGINX:
1 | sudo systemctl start nginx |
Включите автоматический запуск службы NGINX при загрузке:
1 | sudo systemctl enable nginx |
Наконец, убедитесь, что служба активирована:
1 | systemctl status nginx |
Шаг 8: Тестирование NGINX
Чтобы убедиться в правильности работы NGINX, откройте веб-браузер и перейдите на тестовую страницу, используя IP-адрес локального хоста или сервера:
http://localhost
Или замените localhost на IP-адрес вашего сервера.
Дополнительные команды и советы
Компиляция NGINX с дополнительными модулями
Расширить функциональность NGINX можно, скомпилировав его с дополнительными модулями. Например, чтобы использовать модуль Nginx HTTP push, используйте флаг --add-module при конфигурировании NGINX:
1 2 3 | ./configure --add-module=/path/to/nginx-http-push-module make sudo make install |
Заключение
В этом руководстве подробно рассмотрен процесс компиляции NGINX на Debian 12, 11 и 10. Компилируя NGINX из исходных текстов, вы можете настроить свою установку на включение дополнительных модулей, не входящих в стандартный пакет. Это позволит вам создать индивидуальную установку NGINX, оптимизированную под ваши нужды.