![CentOS 7 上基于 Apache 和 PHP7 的 HTTP/2](https://linux22.com/image/682217/CentOS%207%20%E4%B8%8A%E5%9F%BA%E4%BA%8E%20Apache%20%E5%92%8C%20PHP7%20%E7%9A%84%20HTTP%2F2.png)
经过一番研究,我找不到答案:如何更新将 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
我确实想保留我的实际设置和虚拟主机。
答案1
您需要 Apache 2.4.18 或更高版本才能启用 HTTP/2,但有些人建议至少使用 Apache 2.4.23,因为从那时起 mod_http2 发生了很多变化(下文将进一步讨论)。这还需要一些第三方软件(nghttp2 和最新版本的 openssl)
Centos 的默认存储库基于 Red Hat,它优先考虑稳定性而不是最新功能。因此,它们经常在版本上落后(尽管它们会及时更新安全补丁 - 尽管它们的版本号保持不变)。
此外,mod_http2 模块仍在进行大量更改(如果你看看它的发布,几乎每天都会!),所以仍然是相当前沿的 - 虽然在我运行它的几个月里并没有出现任何稳定性问题。
因此,我个人认为在 Apache 上使用 http/2 的最佳方式是从源代码编译最新版本。当然,这并非没有风险。首先,您将失去上述易于更新的安全补丁的保护,因此可能必须更频繁地升级才能保持领先地位(我认为这不是坏事)。此外,您应该在安装之前验证源代码(尤其是对于至少最初以 root 身份运行的应用程序(例如 Apache)。所以这不是一个可以轻易做出的决定。
话虽如此,如果您想继续,从源代码安装并不像听起来那么困难。我有一篇关于如何做到这一点的博客文章并且还使用 Centos。我不使用 PHP,所以不确定是否需要任何额外的编译选项。
还要注意,默认情况下 Apache 将安装到 /usr/local/apache2。这很好,因为它允许您保留原始安装(以防您需要回滚),但这也意味着您需要将所有配置复制到 /usr/local/apache2/conf,停止旧 Apache(包括任何启动脚本),然后从新位置重新启动新 Apache。
答案2
快速提示。使用 nginx 作为反向代理并从中启用 httpd/2。这样您将保留所有 vhosts 和 htaccess。