Как включить http/2 из пакета Centos/yum?

Как включить http/2 из пакета Centos/yum?

Я использую следующую версию Apache на Centos 7:

httpd.x86_64 2.4.6-97.el7.centos.5 @обновления

httpd-tools.x86_64 2.4.6-97.el7.centos.5 @обновления

Это пакет по умолчанию, который поставляется с системой. Я хочу иметь возможность поддерживать http/2, но инструкции, которые я нашел, требуют, чтобы я собрал/настроил программное обеспечение с этим параметром. Однако я использую стандартный пакет для простоты обновления. Есть ли способ включить эту функцию и по-прежнему использовать то же дерево обновлений? Или есть лучший пакет/репозиторий для использования? Или есть ли способ настроить существующую установку для включения http 2.0? Я посмотрел и не увидел mod_http2.so — есть ли способ установить его, а затем включить через конфигурацию, чтобы мне не пришлось пересобирать Apache с нуля?

ПРИМЕЧАНИЕ: Существует существующий вопрос (HTTP/2 на CentOS 7 на Apache с PHP7) об этом, но ему уже 5 лет, и я надеюсь на более актуальный ответ, так как в то время было сказано, что http/2 не был таким стабильным/поддерживаемым

решение1

CentOS7 по умолчанию использует Apache httpd 2.4.6, который не предоставляет mod_http2.soмодуль для реализации HTTP/2.

Вот как это сделать с поддерживаемым программным обеспечением и без перекомпиляции:

  • включитьРепозиторий коллекций программного обеспечения

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

    yum install centos-release-scl
    

    Это установит новый репозиторий с дополнительными пакетами.

  • Установитьhttpd24

    yum install httpd24
    

    который в основном будет извлекать фактический пакет httpd24-httpdи, что более важно для этого ответа, будет извлекать по очереди httpd24-libnghttp2: библиотеку, реализующую протокол HTTP/2.

  • настроить новую установку в ее собственных каталогах конфигурации

    Как и многиеСКЛpackages, этот пакет предназначен для установки без конфликта с пакетом, который он заменяет, а не для его обновления. Большинство файлов конфигурации, которые обычно находятся в, /etc/httpdтеперь находятся в /opt/rh/httpd24/root/etc/httpd.

    Поэтому, пожалуйста, скопируйте и адаптируйте (если в конфигурациях и т.п. есть абсолютные ссылки на каталоги) настройки в новом месте:/opt/rh/httpd24/root/etc/httpd

    В этой версии включен HTTP/2:

    # grep -r http2 /opt/rh/httpd24/root/etc/httpd/
    /opt/rh/httpd24/root/etc/httpd/conf.modules.d/00-base.conf:LoadModule http2_module modules/mod_http2.so
    
  • проверьте синтаксис и т.д.

    Это часть особенностей SCL. Необходимо запустить подготовительные команды, чтобы использовать правильный путь и библиотеки для добавленных компонентов.

    Интерактивно (но вместо этого можно немедленно выполнить неинтерактивную команду):

    # scl enable httpd24 -- bash -l
    

    Новая оболочка наследует дополнительную среду:

    # printenv |grep /opt/rh
    MANPATH=/opt/rh/httpd24/root/usr/share/man:
    LIBRARY_PATH=/opt/rh/httpd24/root/usr/lib64
    LD_LIBRARY_PATH=/opt/rh/httpd24/root/usr/lib64
    PATH=/opt/rh/httpd24/root/usr/bin:/opt/rh/httpd24/root/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/bin
    PKG_CONFIG_PATH=/opt/rh/httpd24/root/usr/lib64/pkgconfig
    

    и теперь может выполнять такие команды, как:

    # httpd -v
    Server version: Apache/2.4.34 (Red Hat)
    Server built:   Feb  1 2022 14:11:48
    
  • Переключить услугу

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

    systemctl disable --now httpd
    systemctl enable --now httpd24-httpd
    

решение2

Инструкции для Red Hat/Fedora смотрите здесь:https://www.ubuntupit.com/how-to-enable-http-2-in-apache-on-linux-system/

Связанный контент