Apache 上 CentOS 7 上的 HTTP/2 和 PHP7

Dam*_*mus 7 apache-2.4 centos7 php7 http2

经过一些研究,我找不到答案:如何将Apache/httpd更新到最新版本以在我的 VPS 上使用 HTTP/2 协议。我正在使用 PHP7 和基于 Apache - CentOS 7 的服务器。

CentOS 默认存储库上没有软件包更新。

[root@vps270238 ~]# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built:   Nov 19 2015 21:43:13
Run Code Online (Sandbox Code Playgroud)

我真的想保留我的实际设置和虚拟主机。

Bar*_*ard 10

您需要 Apache 2.4.18 或更高版本才能启用 HTTP/2,尽管有些人建议至少使用 Apache 2.4.23,因为从那时起 mod_http2 中发生了很多变化(下面将进一步讨论)。这也需要一些 3rd 方软件(nghttp2 和最新版本的 openssl)

Centos 的默认存储库基于 Red Hat,它优先考虑稳定性而不是最新功能。因此,它们的版本经常落后(尽管通过安全补丁保持最新 - 即使它们为此保留了相同的版本号)。

此外,mod_http2 模块仍在进行大量更改(如果您查看它的版本几乎每天都在更改!),因此仍然相当前沿 - 尽管在我运行它的几个月中没有出现任何稳定性问题。

出于这个原因,我个人认为在 Apache 上使用 http/2 的最佳方法是从源代码编译最新版本。这当然不是没有风险。首先,您失去了对上述易于更新的安全补丁的保护,因此可能必须更频繁地升级以保持在这些补丁之上(我认为这不是坏事)。此外,您应该在安装之前验证源代码(特别是对于像 Apache 这样的应用程序,至少最初以 root 身份运行)。所以这不是一个可以掉以轻心的决定。

也就是说,如果您想继续,从源代码安装并不像听起来那么困难。我有一篇关于如何做到这一点以及如何使用 Centos的博客文章。我不使用 PHP,所以不确定您是否需要任何额外的编译选项。

另请注意,默认情况下 Apache 将安装到 /usr/local/apache2。这很好,因为它允许您保留原始安装(以防您需要回滚),但确实意味着您需要将任何配置复制到 /usr/local/apache2/conf 中,停止旧的 Apache(包括在任何启动脚本中) ,然后从新位置重新启动新的 Apache。


x86*_*ini 0

小建议。使用 nginx 作为反向代理并从中启用 httpd/2。您将保留所有虚拟主机和 htaccess。