如何在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”不会对你的包做任何事情,因为你已经固定了它。 因此,请务必定期检查是否发布了新的安全更新。

提交人:萨利赫塞勒姆