ngx_pagespeed 是nginx web服务器的一个模块,通过安装它你的网站加载速度将会“嗖”的一下上升。
Nginx 不支持所谓的"动态加载",但是它允许您在安装前自由添加插件或模块。因此,向nginx添加模块的唯一方法是在编译时添加它们。在本教程中,您将通过Debian wheezy backport源来构建它,从而将ngx_pagespeed模块添加到nginx,因为Debian backports存储库具有更新的nginx版本。
默认情况下,Debian wheezy不包含系统中的backports存储库,因此我们必须按照以下步骤自行添加:
[....]
deb http://ftp.uk.debian.org/debian wheezy-backports main
deb-src http://ftp.uk.debian.org/debian wheezy-backports main
sudo apt-get update
现在您已将backports存储库添加到系统中,现在可以下载nginx backport源安装包了。但是,在此之前,您必须下载并安装一些必备软件包以帮助您构建自定义nginx软件包:
sudo apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev unzip
sudo apt-get-t wheezy-backports build-dep nginx
现在,您可以从backports存储库开始下载nginx源包:
cd ~
mkdir custom-nginx-1.4.4 *# or choose whatever folder name you like*
cd custom-nginx-1.4.4
sudo apt-get -t wheezy-backports source nginx
列出您文件夹的内容:
ls -la
您应该看到三个文件和一个文件夹:
在编写本教程时,nginx backport源包的版本是1.4.4。要开始添加ngx_pagespeed模块,首先需要转到解压缩文件夹"nginx-1.4.4"中的module文件夹:
cd nginx-1.4.4/debian/modules
进入模块文件夹后,执行以下命令行:
wget https://github.com/pagespeed/ngx_pagespeed/archive/v1.7.30.1-beta.zip
unzip v1.7.30.1-beta.zip
cd ngx_pagespeed-1.7.30.1-beta/
wget https://dl.google.com/dl/page-speed/psol/1.7.30.1.tar.gz
tar -xzvf 1.7.30.1.tar.gz
现在,您已将ngx_pagespeed模块成功添加到nginx源包的模块文件夹中,可以使用其他nginx模块进行构建。但是在这之前,您必须完成两个更重要的步骤:
sudo vim ~/custom-nginx-1.4.4/nginx-1.4.4/debian/rules
在这个文件中,你会发现四个config.status块(config.status.full,config.status.light,config.status.extras,config.status.naxsi); 每个块以 (CONFIGURE_OPTS)> @ 结尾。您所要做的就是在 (CONFIGURE_OPTS)> @ 行之前添加四个块,然后保存更改:--add-module=$(MODULESDIR)/ngx\_pagespeed-1.7.30.1-beta \
sudo vim ~/custom-nginx-1.4.4/nginx-1.4.4/debian/changelog
changelog文件的第一行代表当前包版本(1.4.4-1~bpro70 + 1)和发行版(wheezy-backports),只需在序号前面添加您的昵称或任何您喜欢的名字。 :
现在,是时候构建包含ngx pagespeed模块的自定义包了。但是,由于构建此程序包至少需要10分钟(取决于计算机的速度),我们将使用名为 Screen 的应用程序,它只是常规终端窗口中的terminal。但与常规终端不同,在丢失与其的连接后,Screen会使当前shell会话下运行的进程保持活动状态。这意味着如果在构建程序包期间丢失了与shell会话的连接,我们不必重新开始整个过程。
创建"屏幕会话"后,让我们开始构建包:
cd ~/custom-nginx-1.4.4/nginx-1.4.4
sudo dpkg-buildpackage -b
现在,您可以让包构建工具自行完成工作。
再次出现命令提示符后,您就知道构建过程已完成。现在生成的包位于源包文件夹的外部:
cd ~/custom-nginx-1.4.4
ls -la
您应该看到类似于以下的内容:
root@debian-lab2::~/custom-nginx-1.4.4# ls -la
total 72052
drwxr-xr-x 3 root root 4096 Dec 28 13:35 .
drwxr-xr-x 4 root root 4096 Dec 27 03:51 ..
drwxr-xr-x 10 root root 4096 Dec 28 13:34 nginx-1.4.4
-rw-r--r-- 1 root root 78168 Dec 28 13:34 nginx-common_1.4.4-1~bpo70+1-custom_all.deb
-rw-r--r-- 1 root root 79988 Dec 28 13:34 nginx-doc_1.4.4-1~bpo70+1-custom_all.deb
-rw-r--r-- 1 root root 26144390 Dec 28 13:35 nginx-extras-dbg_1.4.4-1~bpo70+1_amd64.deb
-rw-r--r-- 1 root root 3481982 Dec 28 13:35 nginx-extras_1.4.4-1~bpo70+1-custom_amd64.deb
-rw-r--r-- 1 root root 24335692 Dec 28 13:35 nginx-full-dbg_1.4.4-1~bpo70+1-custom_amd64.deb
-rw-r--r-- 1 root root 3286600 Dec 28 13:35 nginx-full_1.4.4-1~bpo70+1-custom_amd64.deb
-rw-r--r-- 1 root root 3618406 Dec 28 13:35 nginx-light-dbg_1.4.4-1~bpo70+1-custom_amd64.deb
-rw-r--r-- 1 root root 3049594 Dec 28 13:35 nginx-light_1.4.4-1~bpo70+1-custom_amd64.deb
-rw-r--r-- 1 root root 3796392 Dec 28 13:35 nginx-naxsi-dbg_1.4.4-1~bpo70+1-custom_amd64.deb
-rw-r--r-- 1 root root 356138 Dec 28 13:34 nginx-naxsi-ui_1.4.4-1~bpo70+1-custom_all.deb
-rw-r--r-- 1 root root 3092638 Dec 28 13:35 nginx-naxsi_1.4.4-1~bpo70+1-custom_amd64.deb
-rw-r--r-- 1 root root 1570640 Nov 28 12:07 nginx_1.4.4-1~bpo70+1.debian.tar.gz
-rw-r--r-- 1 root root 2843 Nov 28 12:07 nginx_1.4.4-1~bpo70+1.dsc
-rw-r--r-- 1 root root 66716 Dec 28 13:34 nginx_1.4.4-1~bpo70+1-custom_all.deb
-rw-r--r-- 1 root root 4922 Dec 28 13:35 nginx_1.4.4-1~bpo70+1-custom_amd64.changes
-rw-r--r-- 1 root root 768217 Nov 21 10:28 nginx_1.4.4.orig.tar.gz
现在您要做的就是选择要安装的nginx包。共有四种nginx包,它们的区别是其中包含的模块数量不同; 我将选择如完整版本进行安装。
sudo dpkg -i nginx-full_1.4.4-1~bpo70+1-custom_amd64.deb nginx-common_1.4.4-1~bpo70+1-custom_all.deb nginx_1.4.4-1~bpo70+1-custom_all.deb
您可能已经注意到,您将在nginx-full_1.4.4-1~bpo70+1-custom_amd64.deb
之外再安装两个.deb软件包。这两个是包依赖关系,您必须与四个nginx包中的任何一个(full,light,extras,naxsi)共同安装。
如果您遇到以下错误消息:
dpkg: dependency problems prevent configuration of nginx-common:
nginx-common depends on init-system-helpers (>= 1.11~); however:
Package init-system-helpers is not installed.
[...]
或执行上一个命令后有关依赖性问题的任何错误消息,请执行以下命令:
sudo apt-get -f install
这将解决您可能遇到的任何依赖性问题,并恢复先前中断的安装。
最后,检查ngx_pagespeed模块是否已成功安装nginx包:
sudo nginx -V
如果安装成功,您应该在其他模块中看到ngx_pagespeed模块:
root@debian-lab2:~/shared# nginx -V
nginx version: nginx/1.4.4
TLS SNI support enabled
configure arguments: --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf
--error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log
--http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid
--with-pcre-jit
--with-debug --with-http_addition_module --with-http_dav_module --with-http_geoip_module
--with-http_gzip_static_module --with-http_image_filter_module
--with-http_realip_module
--with-http_stub_status_module --with-http_ssl_module
--with-http_sub_module --with-http_xslt_module
--with-ipv6 --with-mail --with-mail_ssl_module
--add-module=/root/custom-nginx-1.4.4/nginx-1.4.4/debian/modules/nginx-upload-progress
--add-module=/root/custom-nginx-1.4.4/nginx-1.4.4/debian/modules/nginx-auth-pam
--add-module=/root/custom-nginx-1.4.4/nginx-1.4.4/debian/modules/nginx-dav-ext-module
--add-module=/root/custom-nginx-1.4.4/nginx-1.4.4/debian/modules/nginx-echo
--add-module=/root/custom-nginx-1.4.4/nginx-1.4.4/debian/modules/nginx-upstream-fair
--add-module=/root/custom-nginx-1.4.4/nginx-1.4.4/debian/modules/ngx_http_substitutions_filter_module
--add-module=/root/custom-nginx-1.4.4/nginx-1.4.4/debian/modules/ngx_pagespeed-1.7.30.1-beta
在启用模块之前,我们必须创建一个文件夹,将网站的文件缓存到:
sudo mkdir -p /var/ngx_pagespeed_cache
sudo chown -R www-data:www-data /var/ngx_pagespeed_cache
然后在文本编辑器中打开"nginx.conf"文件
sudo vim /etc/nginx/nginx.conf
并在 http 块中添加以下行并保存更改:
##
#ngx_pagespeed module settings
##
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
"nginx.conf"文件应该是这样的:
现在,重新启动nginx服务器以使更改生效:
sudo service nginx restart
要确认已成功启用ngx_pagespeed模块,请执行以下命令:
sudo apt-get install curl
curl -I -p http://localhost|grep X-Page-Speed
您将应该在输出中看到标题X-Page-Speed:
最后,将以下行添加到位于/etc/nginx/sites-available
的网站虚拟主机文件中的每个服务器:
# 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 /ngx_pagespeed_statistics { allow 127.0.0.1; deny all; }
location /ngx_pagespeed_global_statistics { allow 127.0.0.1; deny all; }
location /ngx_pagespeed_message { allow 127.0.0.1; deny all; }
location /pagespeed_console { allow 127.0.0.1; deny all; }
为了防止您的自定义nginx软件包将来被apt
替换为更新版本的nginx,您应该通过以下步骤锁定您的软件包升级:
sudo vim /etc/apt/preferences.d/nginx
Package: nginx
Pin: version 1.4.4-1~bpo70+1-custom
Pin-Priority: 1001
免责声明
自定义程序包有一个缺点,即每当修补安全漏洞时都要自行更新它。这意味着运行"apt-get upgrade"将不会对您的包执行任何操作,因为它已经被固定。因此,请务必定期检查已发布的安全更新。
现在访问下你的网站看看速度变快了嘛?
参考文献:《How To Add ngx_pagespeed Module to Nginx in Debian Wheezy》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。