HTTP/2

HTTP/2

系统环境: Debian 12 + Apache 2.4.65 + PHP 8.2,都是 Debian 12 默认的配置。

启动 HTTP/2 非常简单,直接使能 http2 模块、然后重启 apache2 即可:

sudo a2enmod http2

但是在处理 MPM(Multi-Processing Module) 时出现以下问题:

The mpm module (prefork.c) is not supported by mod_http2

Apache 默认采用 mpm_prefork,需要改用 mpm_event 才能使能 http2。工作模式改变后,PHP 的工作方式也需要更改,不再作为 apache 的一个模块运行,而是独立运行,因此需要安装 php-fpm (FastCGI Process Manager):

sudo apt install php-fpm

Debian 12 默认采用 php 8.2 版本,因此实际安装、配置的是 php8.2-fpm。

其他配置如下所示:

sudo a2dismod php8.2
sudo a2dismod mpm_prefork

sudo a2enconf php8.2-fpm
sudo a2enmod proxy_fcgi setenvif
sudo a2enmod mpm_event
sudo a2enmod http2

最后重启 apache2 即可:

sudo systemctl restart apache2

然后可以用 curl 测试服务器是否采用了HTTP/2:

curl -v --http2 -I https://yourdomain.com

php-fpm 作为系统的 services 独立启动和运行,检查 /lib/systemd/system 目录可以找到相关的配置(php8.2-fpm.service),也可以使用以下命令检查 php-fpm 的状态:

sudo systemctl status php8.2-fpm

php8.2-fpm 默认的参数有点偏小,需要调整(比如调整为默认值的 5 倍)。修改 /etc/php/8.2/fpm/pool.d/www.conf 中参数,如下所示:

pm.max_children = 25
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 15
Comments are closed.