Установка Apache в Linux
![]()
Apache — популярный бесплатный opensource веб-сервер. Он является частью стека LAMP (Linux, Apache, MySQL, PHP), который обеспечивает большую часть Интернета. Мы уже рассказывали про его установку на Windows и сравнивали его с nginx, а сегодня расскажем про то как установить Apache на Linux.

А про то как установить nginx на Linux, можно прочитать в нашей статье.
Установка веб-сервера Apache на Linux
Установка Apache на CentOS и RHEL
Откройте окно терминала и обновите списки пакетов репозитория, введя следующее:
sudo yum update
Теперь вы можете установить Apache с помощью команды:
sudo yum –y install httpd
httpd — это имя службы Apache в CentOS. Опция –y автоматически отвечает да на запрос подтверждения.
Готово, Apache установлен.
Установка Apache на Ubuntu и Debian
В Ubuntu и Debian пакет и служба Apache называются apache2 . Сначала также обновите инструмент управления пакетами apt .
sudo apt update
Теперь устанавливаем Apache:
sudo apt install apache2
Запуск и управление веб-сервером Apache
Apache — это сервис, работающий в фоновом режиме. В Debian и Ubuntu он автоматически запустится после установки, а в CentOS его нужно запустить вручную.
Не забывайте что в командах в CentOS нам нужно использовать httpd , а в Debian и Ubuntu apache2
Запустите службу Apache, введя следующее:
sudo systemctl start httpd
Система не возвращает вывод, если команда выполняется правильно.
Чтобы настроить автозагрузку Apache при запуске используйте команду:
sudo systemctl enable httpd
Чтобы проверить состояние службы Apache:
sudo systemctl status httpd

Чтобы перезагрузить Apache (перезагрузит файлы конфигурации, чтобы применить изменения):
sudo systemctl reload httpd
Чтобы перезапустить весь сервис Apache:
sudo systemctl restart httpd
Чтобы остановить Apache:
sudo systemctl stop httpd
Чтобы отключить Apache при запуске системы:
sudo systemctl disable httpd
Проверить веб-сервер Apache
Задача вашего программного обеспечения Apache — обслуживать веб-страницы по сети. Ваша новая установка Apache имеет тестовую страницу по умолчанию, но вы также можете создать собственную тестовую страницу.
Проверьте тестовую страницу Apache
В окне терминала найдите IP-адрес вашей системы:
hostname -I | awk ''
Если вы знакомы с командами ip addr show или ifconfig , вы можете использовать их вместо этого. Подробно про команду ip можно прочитать тут.
Откройте веб-браузер и введите IP-адрес, отображаемый в выводе. Система должна показать тестовую страницу HTTP-сервера Apache, как показано на скриншоте ниже:
Или так, если у вас Ubuntu:
Если ваша система не имеет графического интерфейса, используйте команду curl:
curl [your_system's_IP_address]:80
Примечание. В конце: 80 обозначает порт 80, стандартный порт для интернет-трафика. Обязательно напишите соответствующий IP-адрес вместо [your_system’s_IP_address].
Создать HTML-файл для тестирования
Если по какой-либо причине вам нужна или у вас уже есть пользовательская HTML-страница, которую вы хотите использовать в качестве тестовой страницы, выполните следующие действия:
В окне терминала создайте новый индекс файл HTML:
echo My Apache Web Server > /var/www/html/index.html
Отредактируйте файл по своему вкусу и сохраните его.
Теперь вы можете выполнить действия, описанные в предыдущем разделе, и если ваш сервер Apache работает правильно, если он отобразит указанную пользовательскую страницу.
Настройка фаервола для Apache
Фаервол в вашей системе блокирует трафик через разные порты. Каждый порт имеет свой номер, и разные виды трафика используют разные порты. Для вашего веб-сервера вам нужно разрешить HTTP и HTTPS трафик через порты 80 и 443 .
В терминале введите следующее:
sudo firewall-cmd --permanent --zone=public --add-service=http sudo firewall-cmd --permanent --zone=public --add-service=https sudo firewall-cmd --reload
Еще раз проверьте, правильно ли настроен ваш фаервол:
sudo firewall-cmd --list-all | grep services
Вы должны увидеть http и https в списке разрешенных сервисов.
Если вы пользуйтесь UFW, то можно открыть порты HTTP ( 80 ) и HTTPS ( 443 ), включив профиль Apache Full :
sudo ufw allow 'Apache Full'
Если вы используете nftables для фильтрации подключений к вашей системе, откройте необходимые порты, введя следующую команду:
nft add rule inet filter input tcp dport ct state new,established counter accept
Файлы и каталоги Apache
Apache управляется путем применения директив в файлах конфигурации:
- /etc/httpd/conf/httpd.conf — основной файл конфигурации Apache
- /etc/httpd/ — Расположение всех файлов конфигурации
- /etc/httpd/conf.d/ — Все конфигурационные файлы в этом каталоге включены в основной файл настроек
- /etc/httpd/conf.modules.d/ — Расположение конфигурационных файлов модуля Apache
Примечание. При внесении изменений в файлы конфигурации не забывайте всегда перезапускать службу Apache, чтобы применить новую конфигурацию.
Логи Apache расположены тут:
- /var/log/httpd/ — расположение файлов логов Apache
- /var/log/httpd/access_log — показывает журнал систем, которые обращались к серверу
- var/log/httpd/error_log — показывает список любых ошибок, с которыми сталкивается Apache
Назначьте каталог для хранения файлов для вашего сайта. Используйте файлы конфигурации, чтобы указать каталог, который вы выбрали. Некоторые типичные места включают в себя:
- /home/username/my_website
- /var/www/my_website
- /var/www/html/my_website
- /opt/my_website
Как установить nginx на Debian 10

Nginx – один из самых популярных веб-серверов в мире, его используют многие крупные интернет-порталы. Его можно использовать не только в качестве веб-сервера, но и как обратный прокси. Nginx обладает массой преимуществ, например, в сравнении с Apache он потребляет меньше ресурсов.
Из этой статьи вы узнаете, как установить nginx на сервер с ОС Debian 10.
Требования
Для выполнения дальнейших действий у вас должен быть создан пользователь с sudo привилегиями (под которым вам нужно авторизоваться), а также работать файрвол.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Шаг 1: установка nginx
Nginx доступен в стандартных репозиториях Debian, так что его можно установить прямо оттуда, используя пакетный менеджер apt.
Нужно выполнить стандартные действия — сначала обновить локальный индекс пакетов:
$ sudo apt update
А затем уже установить сам nginx:
$ sudo apt install nginx
Далее нужно нажать Enter, чтобы подтвердить то, что вы хотите начать установку. После этого на ваш сервер установится nginx и все необходимые зависимости.
Шаг 2: настройка файрвола
Теперь нужно внести несколько изменений в файрвол.
Введите команду ниже для того, чтобы просмотреть все доступные профили приложений на вашем сервере:
$ sudo ufw app list
Вы увидите список профилей приложений:
Available applications: . Nginx Full Nginx HTTP Nginx HTTPS .
Для nginx доступны 3 профиля:
- Nginx Full : профиль открывает два порта – 80 (обычный, незашифрованный веб-трафик) и 443 (TLS/SSL зашифрованный трафик);
- Nginx HTTP : профиль открывает только порт 80 (обычный, незашифрованный веб-трафик);
- Nginx HTTPS : профиль открывает только порт 443 (TLS/SSL зашифрованный трафик).
Лучше всего использовать наиболее ограниченный профиль, но при этом разрешающий необходимый вам трафик. Так как на сервере еще не настроен SSL, то на данном этапе необходимо открыть порт 80, который разрешает трафик для незашифрованного трафика HTTP.
Для этого нужно выполнить команду:
$ sudo ufw allow 'Nginx HTTP'
Затем проверьте состояние UFW:
$ 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)
Шаг 3: проверка работы веб-сервера
После завершения процесса установки Debian 10 запустит nginx. То есть веб-сервер будет уже работать.
Это можно проверить следующей командой:
$ systemctl status nginx
Вы увидите вывод:
nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2019-07-12 12:52:54 UTC; 4min 23s ago Docs: man:nginx(8) Main PID: 3942 (nginx) Tasks: 3 (limit: 4719) Memory: 6.1M CGroup: /system.slice/nginx.service ├─3942 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ├─3943 nginx: worker process └─3944 nginx: worker process
Это значит, что сервис успешно запущен. И лучший способ убедиться в этом — это загрузить начальную страницу nginx, перейдя по IP-адресу вашего сервера. Если вы его не знаете, то введите команду:
$ ip addr show eth0 | grep inet | awk '< print $2; >' | sed 's/\/.*$//'
В выводе вы увидите несколько строк — попробуйте в строке браузера каждую из них.

После ввода IP-адреса сервера вы должны увидеть:
Если страница отобразилась, значит, сервер работает корректно.
Шаг 4: работа с nginx
Наконец, несколько основных команд, которые позволяют управлять nginx.
$ sudo systemctl stop nginx
Заново запустить после остановки:
$ sudo systemctl start nginx
Остановить и запустить:
$ sudo systemctl restart nginx
Если вы вносите изменения в настройки, можно перезагрузить nginx без остановки процессов и обрыва соединений:
$ sudo systemctl reload nginx
По умолчанию nginx будет запускаться вместе с сервером. Выключить эту настройку можно командой:
$ sudo systemctl disable nginx
Если же вам нужно включить автозапуск nginx, то введите:
$ sudo systemctl enable nginx
Установка Nginx на Debian 9

Nginx — один из самых популярных веб-серверов в мире. На веб-серверах Nginx размещены некоторые самые крупные сайты в Интернете с самым высоким уровнем трафика. Обычно он использует ресурсы эффективнее, чем Apache, и может использоваться как веб-сервер или обратный прокси-сервер.
В этом обучающем модуле мы расскажем, как установить Nginx на сервере Debian 9.
Предварительные требования
Для прохождения этого обучающего модуля вам потребуется настроенный на сервере пользователь без привилегий root с привилегиями sudo, а также активный брандмауэр. Подробнее об этом можно узнать в обучающем модуле Начальная настройка сервера для Debian 9.
Создав учетную запись, войдите в систему как пользователь без привилегий root.
Шаг 1 — Установка Nginx
Поскольку Nginx доступен в репозиториях Debian по умолчанию, его можно установить из этих репозиториев с помощью системы пакетов apt .
Поскольку это первое наше взаимодействие с системой пакетов apt в этом сеансе, мы также обновим индекс локальных пакетов, чтобы получить доступ к актуальным спискам пакетов. Затем мы можем выполнить установку nginx :
После принятия процедуры apt выполнит установку Nginx и других требуемых зависимостей на ваш сервер.
Шаг 2 — Настройка брандмауэра
Перед тестированием Nginx необходимо выполнить настройку программного обеспечения брандмауэра, чтобы разрешить доступ к службе.
Для вывода списка конфигураций приложений, которые известны ufw , необходимо ввести следующую команду:
Необходимо получить список профилей приложений:
OutputAvailable applications: . Nginx Full Nginx HTTP Nginx HTTPS .
Как видите, для Nginx доступны три профиля:
- Nginx Full: этот профиль открывает порт 80 (обычный веб-трафик без шифрования) и порт 443 (трафик с шифрованием TLS/SSL)
- Nginx HTTP: этот профиль открывает только порт 80 (обычный веб-трафик без шифрования)
- Nginx HTTPS: этот профиль открывает только порт 443 (трафик с шифрованием TLS/SSL)
Рекомендуется применять самый ограничивающий профиль, который будет разрешать заданный трафик. Поскольку в этом модуле мы еще не настроили SSL для нашего сервера, нам нужно будет только разрешить трафик на порте 80 .
Для активации можно ввести следующую команду:
Для проверки изменений введите:
В результатах вы должны увидеть, что трафик HTTP разрешен:
OutputStatus: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)
Шаг 3 — Проверка веб-сервера
В конце процесса установки Debian 9 запускает Nginx. Веб-сервер уже должен быть запущен и работать.
Используйте команду systemd init system , чтобы проверить работу службы:
Output● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2018-09-04 18:15:57 UTC; 3min 28s ago Docs: man:nginx(8) Process: 2402 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 2399 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 2404 (nginx) Tasks: 2 (limit: 4915) CGroup: /system.slice/nginx.service ├─2404 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2405 nginx: worker process
Как видно из результатов выполнения команды, служба успешно запущена. Однако лучше всего протестировать ее запуск посредством запроса страницы из Nginx.
Откройте страницу Nginx по умолчанию, чтобы подтвердить работу программного обеспечения через IP-адрес вашего сервера. Если вы не знаете IP-адрес своего сервера, введите в командную строку следующую команду:
На экране появится несколько строк с адресами. Вы можете попробовать каждый из них в браузере, чтобы найти свой.
Когда вы узнаете IP-адрес вашего сервера, введите его в адресную строку браузера:
http://your_server_ip
Вы увидите начальную страницу Nginx по умолчанию:

Эта страница включена в Nginx и показывает правильную работу сервера.
Шаг 4 — Управление процессом Nginx
Ваш веб-сервер запущен и работает, и теперь мы изучим некоторые базовые команды управления.
Чтобы остановить веб-сервер, введите:
Чтобы запустить остановленный веб-сервер, введите:
Чтобы остановить и снова запустить службу, введите:
Если вы просто вносите изменения в конфигурацию, во многих случаях Nginx может перезагружаться без отключения соединений. Для этого введите:
По умолчанию Nginx настроен на автоматический запуск при загрузке сервера. Если вы не хотите этого, вы можете отключить такое поведение с помощью следующей команды:
Чтобы перезагрузить службу для запуска во время загрузки, введите:
Шаг 5 — Настройка блоков сервера
При использовании веб-сервера Nginx вы можете использовать блоки сервера (аналогичные виртуальным хостам в Apache) для инкапсуляции данных конфигурации и размещения на одном сервере нескольких доменов. Мы создадим домен example.com, но вы должны заменить это имя собственным доменным именем. Чтобы узнать больше о настройке доменного имени с помощью DigitalOcean, см. наше руководство Введение в DigitalOcean DNS.
В Nginx на Debian 9 по умолчанию включен один серверный блок, настроенный для вывода документов из директории /var/www/html . Хотя это хорошо работает для отдельного сайта, при хостинге нескольких сайтов это неудобно. Вместо изменения /var/www/html мы создадим в /var/www структуру директорий для нашего сайта example.com, оставив /var/www/html как директорию по умолчанию для вывода в случае, если запросу клиента не соответствуют никакие другие сайты.
Создайте директорию для example.com следующим образом, используя флаг -p для создания необходимых родительских директорий:
Затем назначьте владение директорией с помощью переменной среды $USER :
Разрешения корневых директорий веб-сервера должны быть правильными, если вы не изменяли значение umask . Тем не менее вы можете проверить это с помощью следующей команды:
Затем создайте в качестве примера страницу index.html , используя nano или свой любимый редактор:
Добавьте в страницу следующий образец кода HTML:
/var/www/example.com/html/index.html
Welcome to Example.com! Success! The example.com server block is working!
Сохраните файл и закройте его после завершения.
Для обслуживания этого контента Nginx необходимо создать серверный блок с правильными директивами. Вместо того чтобы изменять файл конфигурации по умолчанию напрямую, мы создадим новый файл в директории /etc/nginx/sites-available/ example.com :
Введите следующий блок конфигурации, который похож на заданный по умолчанию, но обновлен с учетом новой директории и доменного имени:
/etc/nginx/sites-available/example.com
server < listen 80; listen [::]:80; root /var/www/example.com/html; index index.html index.htm index.nginx-debian.html; server_name example.com www.example.com; location / < try_files $uri $uri/ =404; >>
Мы обновили конфигурацию root с указанием новой директории и заменили server_name на имя нашего домена.
Теперь мы активируем файл, создав ссылку в директории sites-enabled , который Nginx считывает при запуске:
Два серверных блока активированы и настроены для реагирования на запросы на основе директив listen и server_name (дополнительную информацию об обработке Nginx этих директив можно найти здесь):
- example.com : будет отвечать на запросы example.com и www.example.com .
- default : будет отвечать на любые запросы порта 80 , не соответствующие двум другим блокам.
Чтобы избежать возможной проблемы с хэшированием памяти при добавлении дополнительных имен серверов, необходимо изменить одно значение в файле /etc/nginx/nginx.conf . Откройте файл:
Найдите директиву server_names_hash_bucket_size и удалите символ # , чтобы убрать режим комментариев для строки:
/etc/nginx/nginx.conf
. http < . server_names_hash_bucket_size 64; . >.
Сохраните файл и закройте его после завершения.
Проведите тестирования, чтобы убедиться в отсутствии ошибок синтаксиса в файлах Nginx:
Если проблем нет, вы увидите на экране следующие результаты:
Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
После тестирования конфигурации перезапустите Nginx для активации изменений:
Теперь Nginx должен обслуживать ваше доменное имя. Вы можете проверить это, открыв в браузере адрес http:// example.com , после чего должны увидеть примерно следующее:

Шаг 6 — Знакомство с важными файлами и директориями Nginx
Теперь вы научились управлять службой Nginx, и настало время познакомиться с несколькими важными директориями и файлами.
Контент
- /var/www/html : веб-контент, в состав которого по умолчанию входит только показанная ранее страница Nginx по умолчанию, выводится из директории /var/www/html . Это можно изменить путем изменения файлов конфигурации Nginx.
Конфигурация сервера
- /etc/nginx : директория конфигурации Nginx. Здесь хранятся все файлы конфигурации Nginx.
- /etc/nginx/nginx.conf : основной файл конфигурации Nginx. Его можно изменить для внесения изменений в глобальную конфигурацию Nginx.
- /etc/nginx/sites-available/ : директория, где могут храниться серверные блоки для каждого сайта. Nginx не будет использовать файлы конфигурации из этой директории, если они не будут связаны с директорией sites-enabled . Обычно конфигурации серверных блоков записываются в эту директорию и активируются посредством ссылки на другую директорию.
- /etc/nginx/sites-enabled/ : директория, где хранятся активные серверные блоки каждого узла. Они созданы посредством ссылки на файлы конфигурации в директории sites-available .
- /etc/nginx/snippets : в этой директории содержатся фрагменты конфигурации, которые можно включить в конфигурацию Nginx. Воспроизводимые сегменты конфигурации хорошо подходят для преобразования в сниппеты.
Журналы сервера
- /var/log/nginx/access.log : каждый запрос к вашему веб-серверу регистрируется в этом файле журнала, если Nginx не настроен иначе.
- /var/log/nginx/error.log : любые ошибки Nginx будут регистрироваться в этом журнале.
Заключение
Теперь вы установили веб-сервер и у вас есть богатые возможности выбора типа обслуживаемого контента и технологий для расширения возможностей ваших пользователей.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
Добавление модулей nginx в Linux (Debian/Ubuntu/CentOS/AlmaLinux)
![]()
При установке nginx штатными средствами ОС в Linux ( apt, aptitude, yum, dnf ) нет возможности сконфигурировать его установку, чтобы добавить или убрать какие-либо модули и nginx устанавливается «как есть». Что же делать, если нам необходимо добавить какой-либо модуль? Правильно, нужно пересобрать nginx вручную. О том, как это правильно сделать в Linux, рассказываем в статье.
Добавление модулей nginx в Linux (Debian/Ubuntu/CentOS /AlmaLinux)
Предположим, для примера, что нам необходимо добавить в nginx модуль http_mp4_module. Вывод команды nginx -V покажет нам, что nginx собран без него.
nginx -V
nginx version: nginx/1.18.0 (Ubuntu) built with OpenSSL 1.1.1f 31 Mar 2020 TLS SNI support enabled configure arguments: --with-cc-opt='-g -O2 -fdebug-prefix-map=/build/nginx-lUTckl/nginx-1.18.0=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-compat --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module
Сохраним вывод команды nginx -V в какой-нибудь текстовый редактор — эта информация нам пригодится при конфигурировании. Видим, что версия nginx у нас установлена 1.18.0 — скачиваем такую же версию:
wget http://nginx.org/download/nginx-1.18.0.tar.gz
Распакуем архив и перейдём в папку nginx-1.18.0:
tar -xvf nginx-1.18.0.tar.gz cd nginx-1.18.0
Далее для сборки нам потребуется установить в систему дополнительные пакеты. Для Debian/Ubuntu выполняем:
apt install build-essential
После предложения продолжить установку — Do you want to continue? [Y/n] — нажимаем Y . Для CentOS/AlmaLinux выполняем:
yum install gcc gcc-c++ kernel-devel yum groupinstall 'Development Tools'
После предложения продолжить установку — Is this ok [y/d/N] — нажимаем y . После установки пакетов приступаем к конфигурированию nginx с добавлением модуля http_mp4_module. Для этого копируем из текстового редактора вывод команды nginx -V , начиная с —prefix= и до первого —add-module= (все присутствующие в выводе —add_module= нам не нужны). После чего пишем в консоли ./configure и вставляем скопированное из редактора. В нашем случае есть вывод:
--add-dynamic-module=/build/nginx-d8gVax/nginx-1.18.0/debian/modules/http-geoip2
поэтому просто копируем все, кроме этой строки. В конец строки добавляем —with-http_mp4_module чтобы получилось так:
./configure --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-compat --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module --with-http_mp4_module
Нажимаем Enter и ждём окончания процесса. В процессе конфигурирования возможно будут появляться ошибки. Способы их устранения описаны ниже. Ошибка:
./configure: error: the HTTP rewrite module requires the PCRE library. You can either disable the module by using --without-http_rewrite_module option, or install the PCRE library into the system, or build the PCRE library statically from the source with nginx by using --with-pcre= option.
Для Debian/Ubuntu исправляется установкой libpcre++-dev:
apt install libpcre++-dev
Для CentOS/AlmaLinux исправляется установкой pcre-devel:
yum install pcre-devel
./configure: error: SSL modules require the OpenSSL library. You can either do not enable the modules, or install the OpenSSL library into the system, or build the OpenSSL library statically from the source with nginx by using --with-openssl= option.
Для Debian/Ubuntu:
apt install libssl-dev
Для CentOS/AlmaLinux:
yum install openssl-devel
./configure: error: the GeoIP module requires the GeoIP library. You can either do not enable the module or install the library.
Для Debian/Ubuntu:
apt install libgeoip-dev
Для CentOS/AlmaLinux:
yum install GeoIP-devel
./configure: error: the HTTP XSLT module requires the libxml2/libxslt libraries. You can either do not enable the module or install the libraries.
Для Debian/Ubuntu:
apt install libxslt1-dev
Для CentOS/AlmaLinux:
yum install libxslt-devel
./configure: error: the HTTP gzip module requires the zlib library You can either do not enable the module or install the libraries.
Для Debian/Ubuntu:
apt install zlib1g-dev
Для CentOS/AlmaLinux:
yum install zlib-devel
./configure: error: the HTTP image filter module requires the GD library. You can either do not enable the module or install the libraries.
Для Debian/Ubuntu:
apt install libgd-dev
Для CentOS/AlmaLinux:
yum install gd gd-devel
Каждый раз после apt install или yum install недостающего пакета запускаем заново.
./configure --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-compat --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_sub_module --with-http_mp4_module
После успешного окончания конфигурирования увидим на экране что-то вроде:
Configuration summary + using threads + using system PCRE library + using system OpenSSL library + using system zlib library nginx path prefix: "/usr/share/nginx" nginx binary file: "/usr/share/nginx/sbin/nginx" nginx modules path: "/usr/lib/nginx/modules" nginx configuration prefix: "/etc/nginx" nginx configuration file: "/etc/nginx/nginx.conf" nginx pid file: "/run/nginx.pid" nginx error log file: "/var/log/nginx/error.log" nginx http access log file: "/var/log/nginx/access.log" nginx http client request body temporary files: "/var/lib/nginx/body" nginx http proxy temporary files: "/var/lib/nginx/proxy" nginx http fastcgi temporary files: "/var/lib/nginx/fastcgi" nginx http uwsgi temporary files: "/var/lib/nginx/uwsgi" nginx http scgi temporary files: "/var/lib/nginx/scgi"
Теперь можно собрать бинарник nginx — выполняем 2 команды:
make make install
По окончании сборки проверяем, что nginx собрался с нужным нам модулем:
/usr/share/nginx/sbin/nginx -V
nginx version: nginx/1.18.0 built by gcc 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) built with OpenSSL 1.1.1f 31 Mar 2020 TLS SNI support enabled configure arguments: --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-compat --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module --with-http_mp4_module
Как видим, —with-http_mp4_module в выводе команды присутствует — всё получилось. Осталось заменить текущий бинарник nginx новым, который мы только что собрали. Останавливаем nginx:
systemctl stop nginx
Переименовываем (на всякий случай) текущий nginx в nginx_back:
mv /usr/sbin/nginx /usr/sbin/nginx_back
Перемещаем на его место новый собраный бинарник:
mv /usr/share/nginx/sbin/nginx /usr/sbin/nginx
Удаляем ненужную больше папку /etc/nginx/sbin:
rm -Rf /usr/share/nginx/sbin
Проверяем ещё раз, что nginx у нас теперь тот, что нужно:
nginx -V
nginx version: nginx/1.18.0 built by gcc 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) built with OpenSSL 1.1.1f 31 Mar 2020 TLS SNI support enabled configure arguments: --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-compat --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module --with-http_mp4_module
Запускаем nginx:
systemctl start nginx
Удаляем ненужную больше папку и архив nginx-1.8.1:
cd ../ rm -Rf nginx-1.18.0/ rm -Rf nginx-1.18.0.tar.gz