如何在DebianWheezy中将ngx pagespeed模块添加到Nginx
介绍
ngx_pagespeed 只是一个添加到 nginx 网络服务器的模块,通过减少互联网浏览器加载网页的时间来加速网站 – [[“%3Ca|https://developers.google.com/speed/pagespeed/module%22target=%22_blank]] [[“%3C/a|”>点击此处]]了解更多技术信息。
构建自定义 nginx 包
Nginx 不支持所谓的“模块动态加载”,这基本上让您可以在安装软件后自由添加插件或模块。 顺便说一句,这绝不是 nginx 中的错误或开发人员的缺点; 但是,它的优点超出了本教程的范围。 因此,将模块添加到 nginx 的唯一方法是在编译时添加它们。 在本教程中,您将通过从 Debian wheezy backport 源构建它来将 ngx_pagespeed 模块添加到 nginx,因为 Debian backports 存储库具有比稳定存储库更新的 nginx 版本,在编写本教程时是 1.4.4 版本. 有关 Debian Backports 的更多信息,请访问其官方页面 backports.debian.org。
首先:添加 Debian wheezy backports 存储库
默认情况下,Debian wheezy 系统中不包含 backports 存储库,因此我们必须按照以下步骤自行添加:
- 在系统中您喜欢的文本编辑器中打开“sources.list”文件:
sudo vim /etc/apt/sources.list
- 将以下两行(指向 Debian backports 存储库)附加到文件末尾(确保每一行都插入单独的行):
[…] deb http://ftp.uk.debian.org/debian wheezy-backports main deb-src http://ftp.uk.debian.org/debian[ X119X] wheezy-backports main
- 更新 Debian 存储库软件包列表:
sudo apt-get 更新
提示
你可以用离你最近的镜子替换英国镜子; 对于所有 Debian 镜像的列表, [[“%3Ca|http://www.debian.org/mirror/list]] "target="_blank [[“%3C/a|”>点击这里]]。
二:下载nginx backport源码包&构建依赖
现在您已经将 backports 存储库添加到您的系统,是时候下载 nginx backport 源包了。 但是,在此之前,您必须下载并安装一些必备软件包来帮助您构建自定义 nginx 软件包:
- 安装 Debian 基本构建软件包,顾名思义,它是在系统上构建任何 Debian 软件包所必需的:
sudo apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev unzip
- 从 backports 存储库安装 nginx 构建依赖项; 并且由于默认情况下禁用了 backports 存储库,因此您必须明确指定 apt:
sudo apt-get -t wheezy-backports build-dep nginx
现在您已经满足了先决条件,您可以开始从 backports 存储库下载 nginx 源包:
- 首先,让我们在我们的主目录中创建一个文件夹,将 nginx 源码包下载到:
cd ~ mkdir custom-nginx-1.4.4 # 或者选择你喜欢的文件夹名称 cd custom-nginx-1.4.4
- 下载nginx包源码:
sudo apt-get -t wheezy-backports 源 nginx
三:准备&修改nginx源码包
让我们列出您已将源包下载到的文件夹的内容:
ls -la
您应该看到三个文件和一个文件夹,该文件夹是文件被提取到的文件夹:
如图所示,在编写本教程时,nginx backport 源包的版本是 1.4.4。 要开始添加 ngx_pagespeed 模块,您首先需要转到解压缩文件夹“nginx-1.4.4”中的模块文件夹:
cd nginx-1.4.4/debian/modules
进入模块文件夹后,执行以下命令行(引自 ngx [[“%3Ca|https://github.com/pagespeed/ngx_pagespeed%22target=%22_blank]] [[“%3C/a|”>官方页面]]; 所以请确保在继续之前检查是否发布了新版本):
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 模块一起构建。 但在您这样做之前,您还必须完成两个更重要的步骤:
- 编辑位于 debian 文件夹中的 rules 文件:
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 \
,然后保存更改:
- 增加源包版本,因为这将帮助您稍后固定包。 为此,请使用文本编辑器打开 changelog 文件:
sudo vim ~/custom-nginx-1.4.4/nginx-1.4.4/debian/changelog
更新日志文件的第一行代表当前包版本(1.4.4-1~bpro70+1)和发行版(wheezy-backports),只需在版本号末尾加上你的昵称或任何你喜欢的东西,前面有一个连字符:
第四:构建自定义的nginx包
现在,是时候构建包含 ngx_pagespeed 模块的自定义包了。 但是由于构建这个包至少需要 10 分钟(取决于您的机器的速度),我们将使用一个名为 Screen 的应用程序,它只是您常规终端窗口中的一个终端。 但与常规终端不同,screen 在失去与当前 shell 会话的连接后保持运行在当前 shell 会话下的进程处于活动状态。 这意味着如果您在构建包期间失去与 shell 会话的连接(特别是那些需要时间的),您将不必重新开始。 For more information on how to use screen, read this nice tutorial [[“%3Ca|how-to-install-and-use-screen-on-an-ubuntu-cloud-server"target="_blank]]”>here.
创建“屏幕会话”后,让我们开始构建包:
cd ~/custom-nginx-1.4.4/nginx-1.4.4 sudo dpkg-buildpackage -b
您现在可以让包构建工具在伸展时完成它们的工作。
一旦命令提示符再次出现,您就知道构建过程已经完成。 现在生成的包位于源包文件夹之外:
cd ~/custom-nginx-1.4.4 ls -la
您应该会看到类似于以下内容的内容:
根 @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 根 4096 12 月 27 日 03:51 ... drwxr-xr-x 10 根 4096 12 月 28 日 13:34 nginx-1.4.4 -rw-r–r-- 1 根 78168 12 月 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 根 26144390 12 月 28 日 13:35 nginx-extras-dbg_1.4.4-1~bpo70+1_amd64.deb -rw-r–r-- 1 根 3481982 12 月 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 根 3286600 12 月 28 日 13:35 nginx-full_1.4.4-1~bpo70+1-custom_amd64.deb -rw-r–r-- 1 根 3618406 12 月 28 日 13:35 nginx-light-dbg_1 .4.4-1~bpo70+1-custom_amd64.deb -rw-r–r-- 1 根根 3049594 12 月 28 日 13:35 nginx-light_1.4.4-1~bpo70+1-custom_amd64.deb -rw-r–r -- 1 根 3796392 12 月 28 日 13:35 nginx-naxsi-dbg_1.4.4-1~bpo70+1-custom_amd64.deb -rw-r–r-- 1 根 356138 12 月 28 日 13:34 nginx-naxsi-ui_1 .4.4-1~bpo70+1-custom_all.deb -rw-r–r-- 1根根 3092638 12 月 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根根 768217 Nov 21 10:28 nginx_1.4.4.orig.tar.gz
第五:安装自定义的nginx包
现在您所要做的就是选择您要安装的 nginx 软件包。 其中有四个,仅在每个模块中包含的模块数量有所不同; 你可以找到[[“%3Ca|https://wiki.debian.org/Nginx%22target=%22_blank]] [[“%3C/a|”>这里]]有更多关于差异的信息。 我将选择完整版并安装如下:
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: 依赖问题阻止配置 nginx-common: nginx-common 依赖于 init-system-helpers (>= 1.11~); 但是:未安装软件包 init-system-helpers。 […]
或执行上一条命令后出现任何有关依赖问题的错误消息,然后只需执行以下命令:
sudo apt-get -f 安装
这将解决您可能遇到的任何依赖问题以及恢复先前中断的安装。
最后,是时候检查 ngx_pagespeed 模块是否使用 nginx 包成功安装了:
sudo nginx -V
如果安装成功,您应该会在其他模块中看到 ngx_pagespeed 模块:
root@debian-lab2:~/shared# nginx -V nginx 版本:nginx/1.4.4 启用 TLS SNI 支持 配置参数:--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-ngin x-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
第六:启用ngx_pagespeed模块
在启用模块之前,我们必须创建一个文件夹,它将您网站的文件缓存到:
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 模块设置 页面速度开启; pagespeed FileCachePath /var/ngx_pagespeed_cache;
这就是“nginx.conf”文件的样子:
现在,重新启动 nginx 服务器以使更改生效:
sudo 服务 nginx 重启
要确认 ngx_pagespeed 模块已成功启用,请执行以下命令:
sudo apt-get install curl curl -I -p http://localhost|grep X-Page-Speed
然后,您应该会在输出中看到 X-Page-Speed
标头:
最后,将以下行添加到位于 /etc/nginx/sites-available
的网站虚拟主机文件中的每个服务器块:
# 确保对 pagespeed 优化资源的请求转到 pagespeed 处理程序,并且没有设置无关的标头。 位置 ~ “.pagespeed.([az].)?[az]{2}.[^.]{10}.[^.]+” { add_header “” “”; } 位置 ~ “^/ngx_pagespeed_static/” { } 位置 ~ “^/ngx_pagespeed_beacon” { } 位置 /ngx_pagespeed_statistics { 允许 127.0.0.1; 全部否认; } 位置 /ngx_pagespeed_global_statistics { 允许 127.0.0.1; 全部否认; } 位置 /ngx_pagespeed_message { 允许 127.0.0.1; 全部否认; } 位置 /pagespeed_console { 允许 127.0.0.1; 全部否认; }
最后:固定您的自定义 nginx 包
为防止您的自定义 nginx 包将来被 'apt' 替换为更新的 nginx 版本,您应该通过以下步骤固定(阻止)您的包升级:
- 在 /etc/apt/preferences.d 中创建一个新文件:
sudo vim /etc/apt/preferences.d/nginx
- 然后在其中粘贴以下行并保存[确保将 Pin 版本替换为您之前设置的自定义版本]:
Package: nginx Pin: version 1.4.4-1~bpo70+1-custom Pin-Priority: 1001
免责声明
拥有自己的自定义包有一个缺点,那就是在修补安全漏洞时全权负责更新它。 这意味着简单地运行“apt-get upgrade”不会对你的包做任何事情,因为你已经固定了它。 因此,请务必定期检查是否发布了新的安全更新。