如何对Nginx的加入ngx_pagespeed在CentOS 7

介绍

ngx_pagespeed或只是pagespeed,是一个Nginx模块,旨在通过减少其资源的大小自动优化您的网站,从而减少客户端浏览器加载它所需的时间。 如果你不熟悉它已经,请检查其官方网站

本文将指导您完成Nginx的pagespeed模块的安装和配置。 重要的是要知道,Nginx的不支持,例如Apache在其他Web服务器可用模块动态加载是很重要的。 由于Nginx不支持此功能,因此您需要从源代码构建Nginx以添加模块。

拥有自己的定制包有一个缺点 - 当有新版本时,您单独负责更新它。 在衡量使用ngx_pagespeed的利弊时考虑这一点。

先决条件

该指南已被写入为CentOS 7. 的Ubuntu 14.04版Debian 8版本都可以使用。

在遵循本教程之前,请确保您满足以下先决条件:

除非另有说明,本教程中需要root权限的所有命令都应以具有sudo权限的非root用户身份运行。

第1步 - 下载源及其依赖关系

让我们开始,确保我们有所有必要的软件编译和测试Nginx。 请运行命令:

sudo yum install wget curl unzip gcc-c++ pcre-devel zlib-devel

接下来,在您的主目录中创建一个文件夹,以下载Nginx的源码包:

mkdir ~/custom-nginx

更改到此新创建的目录:

cd ~/custom-nginx

然后,下载Nginx的源码包,从这个目录中的官方网站 目前,最新版本为1.8.0,可以使用以下命令下载:

sudo wget http://nginx.org/download/nginx-1.8.0.tar.gz

之后,使用以下命令提取新下载的软件包:

sudo tar zxvf nginx-1.8.0.tar.gz

为了确认我们是在同一页上,列出文件夹的内容~/custom-nginx

ls ~/custom-nginx

结果应如下所示:

Output of ls ~/custom-nginxnginx-1.8.0  nginx-1.8.0.tar.gz

可以看到,在编写本教程时,Nginx源包的版本是1.8.0。 要开始添加ngx_pagespeed模块,你首先需要去的modules文件夹中提取的文件夹内nginx-1.8.0

cd nginx-1.8.0/src/http/modules/

在这个目录中,从下载最新的ngx_pagespeed源存档Github上库使用以下命令:

sudo wget https://github.com/pagespeed/ngx_pagespeed/archive/master.zip

一旦下载完成后,与提取它unzip这样的工具:

sudo unzip master.zip

这将创建一个名为新目录ngx_pagespeed-master你的内部~/custom-nginx/nginx-1.8.0/src/http/modules/目录下。 为了方便这个目录重命名为刚ngx_pagespeed使用以下命令:

sudo mv ngx_pagespeed-master ngx_pagespeed

进入新的内部ngx_pagespeed目录:

cd ngx_pagespeed

从那里,下载编译所需的PageSpeed Optimization Libraries(psol):

sudo wget https://dl.google.com/dl/page-speed/psol/1.9.32.6.tar.gz

如果在阅读本文时指向psol存档的链接不工作,请跳过此步骤。 如果在后续步骤中编译期间缺少库,您将看到一个错误和更新的说明如何获取包以后。

最后,提取里面的PSOL包~/custom-nginx/nginx-1.4.6/debian/modules/ngx_pagespeed目录:

sudo tar -xzvf 1.9.32.6.tar.gz

第2步 - 配置源并编译它

此时,您可以配置Nginx源并包括pagespeed模块。 转到Nginx源的父目录:

cd ~/custom-nginx/nginx-1.8.0/

运行使用命令配置源:

sudo ./configure --add-module=/home/your_user/custom-nginx/nginx-1.8.0/src/http/modules/ngx_pagespeed/ --user=nobody --group=nobody --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid

从上面的最重要的配置选项是--add-module=/home/ your_user /custom-nginx/nginx-1.8.0/src/http/modules/ngx_pagespeed/ 它确保pagespeed模块将成为Nginx编译的一部分。 请务必在这条道路的用户更换your_user。

为了方便起见,我们定制了一些其他设置,例如日志文件的位置和服务器应运行的用户/组。 关于什么可以定制更多信息,请检查该文件编译时的选项

配置完成后,使用以下命令启动编译:

sudo make

这将需要长达十分钟,取决于你的Droplet的资源。 之后,您可以使用以下命令安装软件:

sudo make install

你可以找到你的自定义Nginx的安装目录/usr/local/nginx 为了更方便,我们创建两个符号链接。 首先为配置文件:

sudo ln -s /usr/local/nginx/conf/ /etc/nginx

这个命令可以让你发现在配置文件中/etc/nginx/目录,通常配置文件所在的位置。

您还应该创建一个符号链接在主二进制/usr/sbin/目录下,这样就可以更容易地找到它,它包括在启动脚本中。 这也将需要我们稍后将使用的启动脚本。 为此,运行命令:

sudo ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx

第3步 - 创建启动脚本

以前的安装过程负责一些常规任务,例如创建必要的nobody用户和组,Nginx将在其下运行。 但是,您仍然必须创建手动启动脚本。 幸运的是,对于Nginx的在CentOS 7已经有一个在一应俱全nginx.com

首先,在目录中创建一个新的文件/etc/init.d/

sudo nano /etc/init.d/nginx

然后去https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/ ,复制脚本,然后将其粘贴在这个新的文件。

最后,通过运行以下命令使此脚本可执行:

sudo chmod +x /etc/init.d/nginx

之后,您可以使用命令第一次启动Nginx:

sudo service nginx start

要确保Nginx每次使用Droplet启动和停止,请使用以下命令将其添加到默认运行级别:

sudo chkconfig nginx on

第4步 - 启用Pagespeed模块

你现在已经安装了Nginx。 下一步是启用ngx_pagespeed模块。

在启用模块之前,您必须创建一个文件夹,它将缓存您网站的文件:

sudo mkdir -p /var/ngx_pagespeed_cache

确保将此文件夹的所有权更改为Nginx用户,以便Web服务器可以在其中存储文件:

sudo chown -R nobody:nobody /var/ngx_pagespeed_cache

然后打开主Nginx的配置文件nginx.conf在这样的你最喜欢的文本编辑器:

sudo nano /etc/nginx/nginx.conf

在这个文件中添加以下行到server模块并保存更改:

/etc/nginx/nginx.conf
##
# Pagespeed main settings

pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;

# Ensure requests for pagespeed optimized resources go to the pagespeed
# handler and no extraneous headers get set.

location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }
location ~ "^/ngx_pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon" { }

您可以在块中的任何位置添加这些行,但在我们的示例中,我们将其添加到块的末尾。

这是怎么/etc/nginx/nginx.conf文件应该看看现在:

/etc/nginx/nginx.conf
...
http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        ##
        # Pagespeed main settings

        pagespeed on;
        pagespeed FileCachePath /var/ngx_pagespeed_cache;

        # Ensure requests for pagespeed optimized resources go to the pagespeed
        # handler and no extraneous headers get set.

        location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }
        location ~ "^/ngx_pagespeed_static/" { }
        location ~ "^/ngx_pagespeed_beacon" { }

        location / {
            root   html;
            index  index.html index.htm;
        }
...

此外,请务必配置的PageSpeed行添加到每个额外的server ,你可能有块文件。

最后,重新启动Nginx服务器使更改生效:

sudo service nginx restart

第5步 - 测试安装

要检查ngx_pagespeed模块是否已成功安装,请运行Nginx二进制文件,如下所示:

sudo /usr/sbin/nginx -V

如果安装成功,您应该在其他自定义参数中看到ngx_pagespeed模块:

Outputnginx version: nginx/1.8.0
...
configure arguments: --add-module=/home/your_user/custom-nginx/nginx-1.8.0/src/http/modules/ngx_pagespeed/
...

以上并不意味着pagespeed已启用并适用于您的网站。 为了证实这一点,您可以使用curl ,工具和客户端的URL传输库。 有了它检查X-Page-Speed标题是这样的:

curl -I -p http://localhost| grep X-Page-Speed

如果ngx_pagespeed模块工作正常,您应该在输出中看到它及其版本:

OutputX-Page-Speed: 1.9.32.6-7321

如果没有看到此标题,请确保已根据上一步中的说明启用了pagespeed。

结论

这就是如何使用自定义模块,pagespeed来构建Nginx。 这些步骤对于Nginx中尚不可用的任何其他模块都有效。 此外,从源安装包的整个过程与您可能需要自定义的其他软件包相似。 只是不要忘记,当你有一个新的版本,你将不得不自己维护和重新安装这些软件包。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏