跳转到主要内容
首页

用户帐户菜单

  • 登录

主导航

  • 首页
  • 小公司运营
  • 网站建设
  • 创业杂谈
  • 兼职赚钱
  • 小微企业信息化
  • 手册教程
    • 《大伟哥的Drupal 8建站指南》
    • 《通过JohnChow.Com在网上赚钱》
  • 关于

面包屑

  • 首页
  • Ubuntu Server 14.04启用HTTP/2.0

Ubuntu Server 14.04启用HTTP/2.0

By 大伟哥 | 2017-09-10,周日, 23:08

为了在Ubuntu Server 14.04上实现HTTP/2.0这个特性,大伟哥也算是拼上老命了,参考了好多文档,进了好多坑,花了两天时间才成功实现,光阿里云的快照都回滚了两三次,博客更新也落下了一天,好在最后终于实现了。这里详细记录一下实现方法,供大家参考一下。

首先说明一下服务器的情况:阿里云ECS服务器,安装的系统是Ubuntu Server 14.04,使用tasksel install lamp-server默认安装的LAMP组件,Apache 2.4.7, PHP 5.5.9, MySQL 5.5.57, OpenSSL 1.0.1,安装了由Let's Encrypt颁发的数字证书。

目标:实现HTTP/2.0协议,优化网站性能。

实现HTTP/2.0的条件:Apache 2.4.17以上,OpenSSL 1.0.2以上,安装了SSL证书启用了https协议。

Apache从2.4.17版本之后,开始支持HTTP/2.0,而Ubuntu 14.04的官方源是2.4.7,要安装Apache 2.4.17以后版本,要么使用第三方的PPA源,要么自己编译安装,再不就得升级到Ubuntu 16.04。自己编译的话,需要自己解决依赖库的问题,而且以后不方便升级;如果要升级到Ubuntu 16.04,一方面是阿里云官方不建议直接升级到更新版本,要稳妥地更换系统盘又比较花费时间,而且目前ECS上还运行着Magento 1.9,在没有打补丁或升级的情况下也不能直接运行在PHP7.0上。把以想来想去,只有一种办法比较合理,那就是采用第三方PPA源安装新版本的Apache2.4,至于PHP7,虽然性能提升很大,但因为目前还没准备好,所以还是先用PHP5凑合着。

以上就是选择方案升级的原因,不是情怀作祟,不复杂,也很现实,在所有的选择方案中综合考虑,以节省时间提高效率为原则。

以下是方法步骤:

一.、添加APache2和PHP的PPA源并更新:

sudo apt-get install software-properties-common python-software-properties
sudo add-apt-repository ppa:ondrej/apache2
sudo add-apt-repository ppa:ondrej/php
apt-get update

系统会问你是否确认加源,按Enter键回车确认。

二、安装更新必要的软件包:

sudo apt-get install apache2
sudo apt-get install php5-fpm libapache2-mod-fastcgi apache2-mpm-event

三、修改配置文件:

1.修改虚拟主机配置文件

用你喜欢的文本编辑器,修改虚拟主机的配置文件,此例中的配置文件是/etc/apache2/sites-available/daweibro.com-le-ssl.conf,加入下面一行代码,指定HTTP的版本:

Protocols h2 http/1.1

使虚拟主机的配置文件看上去像这样:

<virtualhost>
    ServerAdmin webmaster@localhost
    ServerName daweibro.com
    ServerAlias www.daweibro.com
    Protocols h2 http/1.1
    DocumentRoot /var/www/html/daweibro.com
    <directory>
            Options FollowSymLinks
            AllowOverride None
    </directory>
    <directory /var/www/html/daweibro.com>
     ……
    </directory>
</virtualhost>

2.创建及修改php5-fpm配置文件,位置和文件名称为/etc/apache2/conf-available/php5-fpm.conf,加入下面内容并保存:

<IfModule mod_fastcgi.c>
    AddHandler php5-fcgi .php
    Action php5-fcgi /php5-fcgi
    Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
    FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization

    <Directory /usr/lib/cgi-bin>
        Require all granted
    </Directory>

</IfModule>

这个配置是告诉Apache使用fast CGI的形式处理PHP请求。其中socket /var/run/php5-fpm.sock,这里的路径和方式,要和/etc/php5/fpm/pool.d/www.conf中定义的“listen = /var/run/php5-fpm.sock”保持一致。

四、停用php5, mpm-perfork模块,切换到mpm_event工作模式并重启:

sudo a2dismod php5 mpm_prefork
sudo a2enconf php5-fpm
sudo a2enmod actions fastcgi alias
sudo a2enmod mpm_event
sudo a2enmod http2
sudo service apache2 restart
sudo service php5-fpm restart

如果一切正常,Apache服务器就会启动并以mpm_event新模式运行,而不是原来的prefork模式运行。在浏览器里打开网站,利用开发者工具查看,如果能够看到资源的消息header版本号是HTTP/2.0而不是HTTP/1.1, 就说明我们成功实现了HTTP/2.0。

五、两点说明:

1. PPA源里的Apache版本,已经编译进了足够高版本的OpenSSL,比如当前安装的版本已经是OpenSSL 1.1.0f,不需我们自行安装。

2.PPA源里目前的Apache版本是2.4.27,而从这个版本开始,HTTP/2已经不再支持prefork模式运行,所以我们只能更换运行模式到worker或者event。转换Apache的运行模式直接导致了我们工作量的增加。

参考文章:

  • Apache HTTP/2 Web Server Setup on Ubuntu 14.04
  • How to enable HTTP/2 support in Apache
  • High-performance PHP on apache httpd 2.4.x using mod_proxy_fcgi and php-fpm
  • LAMP on Ubuntu 14.04 with Apache Event MPM
  • Apache和PHP的PPA源:ondrej
网站建设
  • 655 阅读
Apache
Ubuntu

添加新评论

此字段内容将保密,不会被其他人看见。
关于文本格式
  • 不允许使用HTML标签。
CAPTCHA
6 + 8 =
计算出这道简单的算术题并键入答案。例如、1+3,就输入 4。
发布评论前,请通过下面的验证,以免被当作垃圾评论机器人屏蔽。

搜索

沪ICP备17000093号-1

公安备案沪公网安备 31011402008254号

© 2016-2022 大伟哥博客版权所有