介绍
ngx_pagespeed或只是pagespeed,是一个Nginx模块,旨在通过减少其资源的大小自动优化您的网站,从而减少客户端浏览器加载它所需的时间。 如果你不熟悉它已经,请检查其官方网站 。
本文将指导您完成Nginx的pagespeed模块的安装和配置。 重要的是要知道,Nginx的不支持,例如Apache在其他Web服务器可用的模块动态加载是很重要的。 由于Nginx不支持此功能,因此您需要从源代码构建Nginx以添加模块。
拥有自己的定制包有一个缺点 - 当有新版本时,您单独负责更新它。 在衡量使用ngx_pagespeed的利弊时考虑这一点。
先决条件
该指南已被写入为CentOS 7. 的Ubuntu 14.04版和Debian 8版本都可以使用。
在遵循本教程之前,请确保您满足以下先决条件:
- 一个CentOS 7Droplet
- 非根Sudo用户(看看在CentOS 7初始服务器设置的详细信息。)
除非另有说明,本教程中需要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
模块并保存更改:
##
# 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
文件应该看看现在:
...
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中尚不可用的任何其他模块都有效。 此外,从源安装包的整个过程与您可能需要自定义的其他软件包相似。 只是不要忘记,当你有一个新的版本,你将不得不自己维护和重新安装这些软件包。