以Apache 2.4,PHP 7和Ubuntu 18.04 LTS为例配置HTTP / 2

我了解到,也许Apache目前不是在其上启动新项目的首选,但是它存在,存在并且可以在其上运行。 对他的选择可能出于个人喜好,兼容性要求或其他一些原因(并非重点)。 在本文中,我想逐步描述如何在Apache Web服务器上配置对HTTP / 2协议的支持,因为我自己使用它并且在这样的文章中需要它 ,并且我希望它对实践中的人也很有用。

什么是HTTP / 2? 顾名思义,这是HTTP协议的第二个版本。 您至少可以在Wikipedia上阅读有关收益的更多信息。 我将自己说,如果您不托管共享托管,那么必须支持该协议,例如HTTPS。 是的,为了使HTTP / 2正常工作,您将需要通过ssh或通过其他方式以及已配置的HTTPS(TLS / SSL)完全访问计算机的控制台(尽管是虚拟的)。 好吧,让我们开始做生意。

第一步。 Apache更新


Apache服务器从版本2.4.24开始支持HTTP / 2协议,因此,如果您安装了旧版本,就该进行更新了。 但首先,请检查:

apache -v 

该命令将产生如下内容:

 Server version: Apache/2.4.37 (Ubuntu) Server built: 2018-10-28T15:27:08 

第一行显示服务器的版本。 如果它大于或等于2.4.24,我们可以安全地进行第二步。 否则,您需要更新Apache,您可以在著名开发人员的PPA中找到它的当前版本(如果您已经在Debian / Ubuntu上添加了一些新鲜的东西)-OndřejSurý。 PPA是不包含在官方发行版本存储库中的个人软件包。 因此,要使用它们,您首先需要教会系统从何处以及从何处获取它:

 sudo add-apt-repository ppa:ondrej/apache2 

这家伙做得很好,不介意得到一个小甜甜圈,当连接到他的萝卜时,这非常清楚地说明了...

此外,实际上,我们更新了软件包:

 sudo apt update sudo apt upgrade 

再次,我们检查Apache的版本。 如果一切顺利,Apache将安装在您的服务器上,您可以在该服务器上配置HTTP / 2。 如果一切都出错了-恐怕这不是本文的主题。 现在转到第二步。

第二步 使用FastCGI


什么是FastCGI-正如我所说,最好至少在Wikipedia上阅读 ,因为您不能简短地告诉我们。 您需要切换到以FastCGI模式(php-fpm)运行的PHP。 它是如何工作的- 烤面包机上给出了一个很好的答案。 在这里,我将不涉及这些细微差别,但我将立即着手进行安装:

 sudo apt install php-fpm 

安装后,我们将被告知以下内容:要在Apache2中启用PHP 7.2 FPM,请执行以下操作:

 sudo a2enmod proxy_fcgi setenvif sudo a2enconf php7.2-fpm 

我们做。 之后,您需要禁用mod_php,因为现在有了php-fpm来代替它。

 sudo a2dismod php7.2 

一般来说,在此之前,您可能已经拥有不同版本的PHP。 您可以在/ etc / apache2 / mods-available /目录中查看系统中已安装的模块,并且在/ etc / apache2 / mods-enabled中处于活动状态的模块

接下来,重新启动Apache

 sudo service apache2 restart 

然后转到第三步。

第三步 从Prefork切换到Event


MPM是什么,预分支,事件,工作者之间的区别是什么-您可以在这篇精彩的文章中阅读...但是现在,仅需了解一件事非常重要:“标准”预分支与HTTP / 2 不太兼容,因此您需要使用更合适的。 关闭一个,再打开另一个,重新启动Apache。

 sudo a2dismod mpm_prefork sudo a2enmod mpm_event service apache2 restart 

第四步。 启用HTTP / 2


在主机配置文件(位于目录/ etc / apache2 / sites-enabled /中)中 ,或者在服务器的配置中( /etc/apache2/apache2.conf本身), 我们都说我们需要支持新协议:
Protocols h2 h2c http/1.1

真正重要的是h2 。 其他两点由您决定。 h2c是基于TCP(不是TLS)的HTTP / 2支持。 http / 1.1-支持旧版本的HTTP。

打开http2模块并重新启动服务器:

 sudo a2enmod http2 service apache2 restart 

已经到了


从现在开始。 您的资源应开始通过HTTP / 2工作。 如果您通过浏览资源使用Chrome,则会看到浏览器右上角的闪电如何以蓝色点亮。 将鼠标悬停在它上面,您将看到启用HTTP / 2(h2)的提示。 在Firefox中,转到开发人员面板,然后在“网络”标签上,打开“协议”列-对于您网站上的资源,应该列出HTTP / 2.0。 您还可以在Web上的许多站点之一上检查您的资源是否支持此协议。 但是请不要放松,因为HTTP / 3已经来了:)

Source: https://habr.com/ru/post/zh-CN430188/


All Articles