为什么 Ubuntu 16.04 上不存在 Apache2 模块 Http2?

10

我想安装http2_module。在按照这个link链接中的步骤进行Ubuntu 14.04的全新安装后,我尝试运行以下命令来启用http2_module。

sudo a2enmod http2

但是我得到了以下错误信息:模块http2不存在!安装的Apache版本为:Apache/2.4.7,然后我尝试了这个link,并添加了以下存储库作为解决方法。
sudo add-apt-repository ppa:ondrej/apache2

在使用sudo apt-get update刷新后,再次运行安装/启用http2的命令时,我收到了相同的错误提示。模块http2不存在。

3个回答

16

实际上,Apache 2.4.17或更高版本支持HTTP2模块(为了更好的稳定性,建议至少使用2.4.23),但Ubuntu 16.04或14.04的默认Apache版本低于最低要求,因此为了升级您的Apache,请按照以下步骤进行:

$ sudo add-apt-repository -y ppa:ondrej/apache2

$ sudo apt-key update

$ sudo apt-get update

然后运行

$ sudo apt-get --only-upgrade install apache2 -y

您将会收到两次提示,如下所示:

*** apache2.conf (Y/I/N/O/D/Z) [default=N] ?

两次都按 Y 键并继续。

检查您的 mods-available 文件夹,您将看到 http2.load 文件。

$ sudo a2enmod http2

你将会获得以下输出

启用http2模块。要激活新配置,您需要运行:service apache2 restart


5
还有一件事,这个过程会重置所有配置,因此如果需要,请备份。 - DnA

8
  1. Upgrade Apache to Latest

    apt-get install software-properties-common python-software-properties 
    add-apt-repository ppa:ondrej/apache2 
    apt-get update -y 
    apt-get upgrade -y 
    apt-get install apache2 -y 
    apache2 -v 
    

Apache版本应该是2.4.25或更高。

  1. Enable it from mod_http2

    a2enmod http2 
    service apache2 restart
    
  2. Add Self-Signed OR Valid SSL to your website to enable http2 on your server.
    Link:- https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on-apache-for-ubuntu-14-04

  3. Add HTTP/2 Support to Apache2 Virtual Host file. Example :

    <VirtualHost *:443>  
        Protocols h2 http/1.1 
        ServerAdmin you@your-site.com 
        ServerName your-site.com 
        ... 
    </VirtualHost>
    

重新启动Apache2服务

service apache2 restart
  1. Apache2 on HTTP/2 does not support in mpm_prefork mode, change it to mpm_event.PHP version should be php5.6 or greater.

    service apache2 stop 
    apt-get install php7.1-fpm 
    a2enmod proxy_fcgi setenvif 
    a2enconf php7.1-fpm 
    a2dismod php7.1 
    a2dismod mpm_prefork 
    a2enmod mpm_event 
    service apache2 start 
    

现在,通过访问您服务器的域名或公共IP地址来测试您的配置,如下所示:https://server_domain_name_or_IP

检查HTTP/2协议是否正常工作,请在浏览器中打开“检查元素”,并在网络部分中检查http协议版本。


我按照上面DnA的答案所述的类似指示进行操作,发现多个网站都是这么说的,但是无论我怎么做,Chrome都坚持使用http1.1。最后,我找到了一个页面(https://techwombat.com/enable-http2-apache-ubuntu-16-04/),该页面建议安装php-fpm,就像这里描述的一样,结果一切顺利。在我看来,这应该是目前应接受的答案。当然,在未来会有变化,一旦Ubuntu本身采用http2支持(Apache项目认为http2支持此时是稳定的,希望那一天很快到来)。 - John Rix
是的 @JohnRix Ubuntu目前不支持原生的http2,希望我们能尽快获得稳定版本的发布。 - Ravi Kumar

0

我认为仅在Ubuntu 16.04或Ubuntu 14.04上升级apache2是不稳定的,直到您将操作系统升级至最低ubuntu 18.04才能解决该问题。在我的情况下,仅升级apache2后,它显示了无法解决的异常,直到我进行全新安装ubuntu 18.04以启用HTTP/2模块。

希望这可以帮助到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接