На данный момент в официальном репозитории Nginx размещены пакеты без поддержки технологии APLN. Возможно, вы успели заметить, что в актуальной версии Chrome ваши сайты перестали работать по протоколу HTTP/2. Связано это с тем, что для сборки Nginx используется старая версия OpenSSL. Хочешь HTTP/2, значит придется собирать Nginx из исходников вручную.
Основной недостаток установки программ при помощи make install — это неудобное управление. Вместо этого мы рассмотрим сборку rpm пакетов из исходников. Все действия я буду производить в дистрибутиве CentOS 7, а в качестве примера буду использовать Nginx 1.11.3.
Устанавливаем все необходимое для сборки и компиляции:
yum groupinstall -y "Development Tools" && yum install rpmdevtools nano yum-utils
Собирать пакеты можно из-под любого пользователя, но делать это из-под root не рекомендуется. Создадим для сборки пакета пользователя builder:
useradd builder usermod -a -G builder builder
Для сборки пакета необходимо создать структуру каталогов. Для этого выполните команду ниже:
rpmdev-setuptree
Для настройки репозитория yum необходимо создать файл:
nano /etc/yum.repos.d/nginx.repo
Копируем в файл следующие строки:
[nginx] name=nginx repo baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/ gpgcheck=0 enabled=1 [nginx-source] name=nginx source repo baseurl=http://nginx.org/packages/mainline/centos/7/SRPMS/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Загружаем пакет с исходниками и запускаем установку rmp:
cd /tmp yumdownloader --source nginx rpm -Uvh nginx*.src.rpm
Установим все необходимые для сборки Nginx зависимости:
yum-builddep nginx
Скачиваем и распаковываем исходники OpenSSL:
cd /usr/src/ wget https://www.openssl.org/source/openssl-1.0.2h.tar.gz tar -xvzf openssl-1.0.2h.tar.gz
В параметрах сборки необходимо указать путь к исходникам OpenSSL:
nano ~/rpmbuild/SPECS/nginx.spec
Для примера привожу фрагмент моего файла:
--with-http_slice_module \
--with-mail \
--with-mail_ssl_module \
--with-file-aio \
--with-ipv6 \
--with-openssl=/usr/src/openssl-1.0.2h \
Запускаем сборку пакета:
cd ~/rpmbuild/SPECS/ rpmbuild -ba nginx.spec
После завершения сборки переносим rpm из папки:
cd ~/rpmbuild/RPM/ ls nginx-1.11.3-1.el7.centos.ngx.x86_64.rpm nginx-debuginfo-1.11.3-1.el7.centos.ngx.x86_64.rpm nginx-module-geoip-1.11.3-1.el7.centos.ngx.x86_64.rpm nginx-module-image-filter-1.11.3-1.el7.centos.ngx.x86_64.rpm nginx-module-njs-1.11.3.0.1.0-1.el7.centos.ngx.x86_64.rpm nginx-module-perl-1.11.3-1.el7.centos.ngx.x86_64.rpm nginx-module-xslt-1.11.3-1.el7.centos.ngx.x86_64.rpm
И запускаем установку командой:
rpm -Uvh nginx*.rpm