kk Blog —— 通用基础


date [-d @int|str] [+%s|"+%F %T"]
netstat -ltunp
sar -n DEV 1

Ubuntu 开启 Apache2 HTTP2支持

Ubuntu 16.04的默认Apache 包中不包含http2,解决方法有2种。

使用PPA源

自行编译mod_http2

方法一,使用ppa源

1
2
3
4
5
sudo add-apt-repository ppa:ondrej/apache2
sudo apt-get update
sudo apt-get install apache2
sudo a2enmod http2
sudo systemctl restart apache2

方法二,自行编译mod_http2

配置Apache

创建配置文件

1
2
3
cat > /etc/apache2/mods-available/http2.load <<EOF
LoadModule http2_module /usr/lib/apache2/modules/mod_http2.so
EOF

将mpm模式由prefork改为mpm event模式

注意: HTTP/2在httpd附带的所有多处理模块中都受到支持。但是,如果您使用prefork mpm,将会有严格的限制。在prefork mod_http2中,每次连接只处理一个请求。但是客户端,比如浏览器,会同时发送很多请求。如果其中一个需要很长时间来处理(或者是长轮询),其他请求将会停止。默认情况下,mod_http2不能在这个限制下工作。原因是,如果您运行的处理引擎不是为多线程准备的,那么现在只选择prefork,例如,它将在多个请求中崩溃。

如果您的设置能够处理它,那么现在配置 event mpm是最好的(如果您的平台支持的话)。

PHP默认安装不能工作在Apache MPM Event模式,请参见PHP配置节解决该问题

1
2
a2dismod mpm_prefork
a2enmod mpm_event

配置网站,在需要启用http2的VirtualHost中增加以下内容。建议在ServerName之后

    HTTPS 网站
1
    Protocols h2 http/1.1
    HTTP 网站
1
    Protocols h2c http/1.1

重启apache,注意如需要配置PHP,这里可以先不重启Apache

1
systemctl restart apache2

配置PHP

请根据使用的PHP版本修改命令。

安装PHP-FPM

1
apt install php7.0-fpm

修改Apache 配置

1
2
3
a2enmod proxy_fcgi setenvif
a2dismod php7.0
a2enconf php7.0-fpm

重启Apache

1
systemctl restart apache2