在Debian和Ubuntu上使用Ngx_Pagespeed(速度优化)安装Nginx

在本教程中,我们将介绍如何在Debian和Ubuntu系统上安装带有ngx_pagespeed的Nginx Web服务器,以提高Nginx网站的性能。

在上一篇文章中,我们展示了如何使用CentOS 7上的Ngx_Pagespeed加快Nginx性能 在本教程中,我们将介绍如何在Debian和Ubuntu系统上安装带有ngx_pagespeed的Nginx,以提高Nginx网站的性能。

Nginx [引擎x]是一个免费的开源的,流行的HTTP服务器,为网络上的许多站点提供支持,以其高性能和稳定性着称。 它还可以作为反向代理,通用邮件和TCP / UDP代理服务器,并且还可以部署为负载平衡器。

Ngx_pagespeed是一个免费的开源Nginx模块,旨在提高网站的速度以及减少页面加载时间; 它大大降低了用户查看和与您网站上的内容进行交互的时间。

建议阅读: 安装Mod_Pagespeed以提高Apache服务器性能

Ngx_pagespeed特点:

  • HTTPS支持与URL控制。
  • 图像优化:剥离元数据,动态调整大小,重新压缩。
  • CSS和JavaScript的缩小,连接,内联和大纲。
  • 小资源内联。
  • 延迟图像和JavaScript加载。
  • HTML重写
  • 缓存生存期延长。
  • 允许配置多个服务器和许多其他服务器。

第1步:从源头安装Nginx

1.从系统上要安装的软件包之后的源中安装带有ngx_pagespeed的 Nginx

$ sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip
在Ubuntu上安装Build Essential Tools

在Ubuntu上安装Build Essential Tools

2.接下来,使用wget命令下载最新版本的Nginx源文件(在本文撰写的时候为1.13.2 ),并解压缩文件,如下所示。

$ mkdir -p ~/make_nginx
$ cd ~/make_nginx
$ wget -c https://nginx.org/download/nginx-1.13.2.tar.gz
$ tar -xzvf nginx-1.13.2.tar.gz
下载Nginx源码包

下载Nginx源码包

接下来,获取ngx_pagespeed源文件并解压缩这样的压缩文件。

$ wget -c https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip
$ unzip v1.12.34.2-stable.zip
下载Ngx_Pagespeed源文件

下载Ngx_Pagespeed源文件

4.然后进入解压缩的ngx_pagespeed目录,并下载PageSpeed优化库以编译Nginx,如下所示。

$ cd ngx_pagespeed-1.12.34.2-stable/
$ wget -c https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz
$ tar -xvzf 1.12.34.2-x64.tar.gz
下载PageSpeed库

下载PageSpeed库

第2步:使用Ngx_Pagespeed配置和编译Nginx

5.下一步进入nginx-1.13.2目录,并使用以下命令配置Nginx源。

$ cd  ~/make_nginx/nginx-1.13.2
$ ./configure --add-module=$HOME/nginx/ngx_pagespeed-1.12.34.2-stable/ ${PS_NGX_EXTRA_FLAGS}
配置Nginx与Ngx_Pagespeed模块

配置Nginx与Ngx_Pagespeed模块

接下来,编译并安装Nginx如下。

$ make
$ sudo make install
安装Nginx与Ngx_Pagespeed

安装Nginx与Ngx_Pagespeed

7.安装过程完成后,运行以下命令为Nginx创建必要的符号链接。

$ sudo ln -s /usr/local/nginx/conf/ /etc/nginx
$ sudo ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx

第3步:为SystemD创建Nginx单元文件

8.在这里,您必须手动创建Nginx单元文件,因为systemd是Debian和Ubuntu系统的较新版本上的init系统

Fisrt,创建文件/lib/systemd/system/nginx.service

$ sudo vi /lib/systemd/system/nginx.service
</pre
Then download the NGINX systemd service file paste the unit file configuration into the file.
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

保存文件并关闭它。

9.现在,暂时启动nginx服务,并使用下面的命令使其能够在系统启动时启动。

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

重要提示 :启动Nginx服务后,您可能会看到如下面的屏幕截图所示的错误。

systemd[1]: nginx.service: PID file /run/nginx.pid not readable (yet?) after start: No such file or directory 
Nginx无法启动错误

Nginx无法启动错误

要解决它,打开Nginx配置/etc/nginx/nginx.conf文件,并附加以下行。

#pid  logs/nginx.pid;
to
pid  /run/nginx.pid;

最后重新启动nginx服务。

$ sudo systemctl daemon-reload
$ sudo systemctl start nginx
$ sudo systemctl status nginx

第4步:使用Pagespeed模块配置Nginx

10.现在Nginx在系统上安装并运行,您需要启用Ngx_pagespeed模块。 首先创建一个目录,模块将缓存您网站的文件,并在此目录中设置适当的权限,如下所示。

$ sudo mkdir -p /var/ngx_pagespeed_cache
$ sudo chown -R nobody:nogroup /var/ngx_pagespeed_cache

11.要启用Ngx_pagespeed模块,请打开Nginx配置文件。

$ sudo vi /etc/nginx/nginx.conf

在服务器块中添加以下Ngx_pagespeed配置行。

# 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" { }

注意 :如果您在服务器上部署了任何nginx虚拟主机 ,请将以上pagespeed指令添加到每个服务器块,以便在每个站点上启用Ngx_pagespeed。

以下是在默认虚拟主机中启用了Ngx_pagespeed的Nginx配置文件的工作示例。

Nginx配置与Ngx_pagespeed
#user  nobody;
worker_processes  1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
pid   /run/nginx.pid;
events {
worker_connections  1024;
}
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;
}
#error_page  404              /404.html;
# redirect server error pages to the static page /50x.html
#
error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
#    proxy_pass   http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
#    root           html;
#    fastcgi_pass   127.0.0.1:9000;
#    fastcgi_index  index.php;
#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
#    include        fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
#    deny  all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
#    listen       8000;
#    listen       somename:8080;
#    server_name  somename  alias  another.alias;
#    location / {
#        root   html;
#        index  index.html index.htm;
#    }
#}
# HTTPS server
#
#server {
#    listen       443 ssl;
#    server_name  localhost;
#    ssl_certificate      cert.pem;
#    ssl_certificate_key  cert.key;
#    ssl_session_cache    shared:SSL:1m;
#    ssl_session_timeout  5m;
#    ssl_ciphers  HIGH:!aNULL:!MD5;
#    ssl_prefer_server_ciphers  on;
#    location / {
#        root   html;
#        index  index.html index.htm;
#    }
#}
}

保存并关闭文件。

12.然后通过运行以下命令检查Nginx配置文件的语法是否无错,如果正确,您将看到以下输出:

$ sudo nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

13.然后重新启动Nginx服务器以实现最近的更改。

$ sudo systemctl restart nginx

第5步:用Ngx_pagespeed测试Nginx

14.现在测试Ngx-pagepeed是否正在使用下面的cURL命令与Nginx配合使用。

$ curl -I -p http://localhost
用Ngx_Pagespeed检查Nginx

用Ngx_Pagespeed检查Nginx

如果您看不到上述标题,请返回到第10步,并仔细阅读说明,以使连续步骤能够启用Ngx-pagepeed。

Ngx-pagespeed Github仓库https//github.com/pagespeed/ngx_pagespeed

如果您想要保护Nginx Web服务器,那么我们建议您阅读有用的教程: “Nginx安全,加固和改进性能的终极指南”

这就对了! 在本教程中,我们解释了如何在Debian和Ubuntu上安装带有ngx_pagespeed的Nginx。 如果您有任何疑问,请使用我们以下的评论表单发送给我们。