介绍
ngx_pagespeed仅仅是被添加到nginx的Web服务器通过降低互联网浏览器需要加载网页的时间加快网站的一个模块- 请点击这里获取更多的技术信息。构建自定义nginx软件包
Nginx的不支持所谓的“动态模块的装载”,这基本上给你的安装后,增加插件或模块软件的自由。顺便说一下,这绝不是一个在nginx中的错误或其开发人员的缺点;然而,它的优点在本教程的范围之外。因此,添加模块到nginx的唯一方法是通过在编译期间添加它们。在本教程中,您将要通过从Debian wheezy backport源构建nginx来添加ngx_pagespeed模块,因为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后端存储库)附加到末尾的文件(确保每一行插入到单独的行中):
[....] deb http://ftp.uk.debian.org/debian wheezy-backports main deb-src http://ftp.uk.debian.org/debian wheezy-backports main
- 更新Debian仓库包列表:
sudo apt-get update小费
你可以用最接近你的镜子代替uk镜子;所有Debian镜像列表, 请点击此处 。
第二:下载nginx backport源码包和构建依赖
现在你已经将backports存储库添加到您的系统,是时候下载nginx backport源码包。在这之前,您必须下载并安装一些必备软件包,以帮助您构建自定义nginx软件包:- 安装Debian基本构建包,如名称所示,在系统上构建任何Debian包是必不可少的:
sudo apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev unzip
- 从backports库安装nginx构建依赖项;并且由于默认情况下禁用了后端存储库,因此必须明确指定apt:
sudo apt-get -t wheezy-backports build-dep nginx现在您已经满足了先决条件,您可以从backports存储库开始下载nginx源包:
- 首先,让我们在主目录中创建一个文件夹,将nginx源码包下载到:
cd ~ mkdir custom-nginx-1.4.4 *# or choose whatever folder name you like* cd custom-nginx-1.4.4
- 下载nginx包源码:
sudo apt-get -t wheezy-backports source nginx
第三:准备和修改nginx源码包
让我们列出您下载源包的文件夹的内容:ls -la您应该会看到三个文件和一个文件夹,这是文件被提取到的文件夹: 如图所示,在编写本教程时,nginx backport源码包的版本为1.4.4。要开始添加ngx_pagespeed模块,首先需要转到解压缩的文件夹“nginx-1.4.4”中的模块文件夹:
cd nginx-1.4.4/debian/modules一旦你在模块文件夹,执行以下命令行(这是从NGX引述 官方网页 ,所以一定要检查是否有新版本,然后再继续发布):
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文件夹:
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)结束 > @。 所有您需要做的就是添加
--add-module=$(MODULESDIR)/ngx_pagespeed-1.7.30.1-beta \
到四个区块,则
(CONFIGURE_OPTS)前右
> @行,然后保存更改:
- 增加源包版本,因为这将帮助您以后固定包。要做到这一点,打开用文本编辑器changelog文件:
sudo vim ~/custom-nginx-1.4.4/nginx-1.4.4/debian/changelogchangelog文件的第一行表示当前包版本(1.4.4-1〜bpro70 + 1)和分发(wheezy-backports),只需在版本号末尾添加您的昵称或任何你喜欢的连字符:
第四:构建定制的nginx软件包
现在,它的时间来建立自定义的包,其中包括NGX 的PageSpeed模块。 但由于建设这个包是要采取至少10分钟(取决于您的机器的速度),我们将使用称为屏幕的应用程序,这仅仅是常规的终端窗口内的终端。 但不同于常规终端,屏幕保持进程运行在您当前的shell会话仍然活着,失去与它的连接。 这意味着如果在构建包时失去与shell会话的连接(特别是那些需要时间的包),您将不必重新开始。 有关如何使用屏幕的详细信息,请阅读本教程 https://www.youcl.com/how-to-install-and-use-screen-on-an-ubuntu-云服务器上安装和使用Screen。 创建“屏幕会话”后,我们开始构建包: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
第六:启用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 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软件包
为了防止你的自定义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”将不会对你的包做任何事情,因为你已经固定它。 因此,请务必定期检查是否发布了新的安全更新。
提交者:Saleh Salem