chaihongjun.me

阿里云cenots6.5安装ngx_pagespeed模块

  PS:2017.06.20 更新

自pagespeed版本号1.12.34开始,POSL支持库下载链接地址发生了变化,安装方式也有变动,另外,增加了对redis的支持,以及pagespeed缓存清理的其他实现方式:

首先是下载链接,原来是

##wget https://dl.google.com/dl/page-speed/psol/${NPS_VERSION}.tar.gz 直接在pagespeed源码包里下载
#比如:
wget https://dl.google.com/dl/page-speed/psol/1.11.33.4.tar.gz

在1.12.34版本之后是这这样的:

#wget https://dl.google.com/dl/page-speed/psol/[PageSpeed版本]-x[系统位数].tar.gz
#比如:(64位系统)
wget https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz

对于redis的支持,直接在配置中添加:

pagespeed RedisServer "host:port";
#配置连接redis失败之后的等待时间,默认是1秒(可选)
pagespeed RedisReconnectionDelayMs timeout_in_milliseconds;

再一个是缓存清理方式,直接在服务器上的清理如下:

# /path/to/ngx_pagespeed_cache 是缓存存放目录
touch /path/to/ngx_pagespeed_cache/cache.flush

1.12.34.2新增加特性详情,请访问:

https://modpagespeed.com/doc/release_notes#release_1.12.34.2-beta

———————  以下是原来发布的内容,上面是最新的更新 ——————————

    pagespeed module是谷歌一款针对网页优化的模块,分为apache和nginx两个平台。最近看到github上发布了stable版本的消息,就立马尝试安装部署。服务器环境为lnmp。

ngx_pagespeed稳定版

1.11.33.4-beta也就是nginx平台上的第一个稳定版。通过:

gcc -v

可以看到gcc版本为4.4.7不符合安装要求:

Starting from version 1.10.33.0, we also require a modern C++ compiler, such as gcc ≥ 4.8 or clang ≥ 3.3 to build. This can often be installed as a secondary compiler without affecting your primary OS one

https://developers.google.cn/speed/pagespeed/module/build_ngx_pagespeed_from_source

所以要升级一下:

sudo rpm --import https://linux.web.cern.ch/linux/scientific6/docs/repository/cern/slc6X/i386/RPM-GPG-KEY-cern
sudo wget -O /etc/yum.repos.d/slc6-devtoolset.repo https://linux.web.cern.ch/linux/scientific6/docs/repository/cern/devtoolset/slc6-devtoolset.repo
sudo yum install devtoolset-2-gcc-c++ devtoolset-2-binutils

最后一步yum安装可能因为网络的问题需要操作好几次,一定要看到complete!才可以。

这个时候可以看下这个gcc版本号,应该是大于4.8的:

/opt/rh/devtoolset-2/root/usr/bin/gcc -v

由于是在目前最稳定版1.10.2的nginx基础增加模块,因此不需要下载新的nginx包,只要下载pagespeed和它的依赖库posl即可:

cd /root/lnmp/src/
#wget https://github.com/pagespeed/ngx_pagespeed/archive/v${NPS_VERSION}-beta.zip
wget https://github.com/pagespeed/ngx_pagespeed/archive/v1.11.33.4.tar.gz -O ngx_pagespeed.1.11.33.4.tar.gz
tar zxf ngx_pagespeed.1.11.33.4.tar.gz
mv ngx_pagespeed.1.11.33.4-beta  ngx_pagespeed.1.11.33.4 #改一下源码包目录名称

接着再下载posl:(这里需要注意的是posl需要下载的版本和pagespeed的版本号一致,而且posl的源码包一定要放在pagespeed的源码包里)

#wget https://dl.google.com/dl/page-speed/psol/${NPS_VERSION}.tar.gz 直接在pagespeed源码包里下载
wget https://dl.google.com/dl/page-speed/psol/1.11.33.4.tar.gz
tar zxvf  1.11.33.4.tar.gz  #解压到posl目录

接着进入nginx的源码包准备配置:

cd /root/lnmp/src/nginx-1.10.2
nginx -V #查看一下之前配置的参数是什么,后面的配置依然需要
./configure  ${这里是之前nginx -V 命令输出的原理配置的参数} --add-module="/root/lnmp/src/ngx_pagespeed.1.11.33.4" --with-cc=/opt/rh/devtoolset-2/root/usr/bin/gcc
#/root/lnmp/src/ngx_pagespeed.1.11.33.4 是之前下载解压后的pagespeed源码包路径
#--with-cc=/opt/rh/devtoolset-2/root/usr/bin/gcc 用的是新版本的gcc(gcc>=4.5)来编译配置参数

以上关键过程都过去了,后面就是升级步骤

make

操作及其他部分,可参考此前的文章《WEB不停服nginx平滑静默升级和跨版本升级注意事项》,一切安装妥当之后就是pagespeed的具体过滤设置了,直接在server段内添加:

#######  ngx_pagespeed  #######
#pagespeed 开关
pagespeed on;  
#pagespeed 文件缓存目录
pagespeed FileCachePath /alidata1/ngx_pagespeed_cache;  
pagespeed FileCacheSizeKb            102400;
pagespeed FileCacheCleanIntervalMs   3600000;
pagespeed FileCacheInodeLimit        500000; 
pagespeed EnableFilters add_head;
pagespeed DisableFilters add_instrumentation;
pagespeed EnableFilters combine_heads;
pagespeed EnableFilters convert_meta_tags;
pagespeed EnableFilters convert_gif_to_png;
pagespeed EnableFilters local_storage_cache;
pagespeed EnableFilters responsive_images,resize_images;
pagespeed EnableFilters move_css_above_scripts;
pagespeed EnableFilters move_css_to_head;
pagespeed EnableFilters remove_quotes; 
pagespeed RewriteLevel PassThrough;    
pagespeed EnableFilters collapse_whitespace;    
pagespeed EnableFilters canonicalize_javascript_libraries; 
pagespeed EnableFilters combine_css;    
pagespeed EnableFilters combine_javascript;    
pagespeed EnableFilters elide_attributes;    
pagespeed EnableFilters extend_cache;    
pagespeed EnableFilters lazyload_images;  
pagespeed EnableFilters rewrite_css,sprite_images;
pagespeed EnableFilters trim_urls;  
pagespeed EnableFilters rewrite_javascript;    
pagespeed UseExperimentalJsMinifier on;
pagespeed EnableFilters rewrite_images;  
pagespeed EnableFilters strip_image_meta_data;
pagespeed EnableFilters insert_dns_prefetch;    
pagespeed Disallow "*/wp-admin/*";
pagespeed XHeaderValue "Proudly Presented by Google";
pagespeed PreserveUrlRelativity on;

pagespeed Statistics on;
pagespeed StatisticsLogging on;
pagespeed LogDir /alidata1/pagespeed_logs;
pagespeed StatisticsPath /ngx_pagespeed_statistics;
pagespeed MessagesPath /ngx_pagespeed_message;
pagespeed ConsolePath /pagespeed_console;
pagespeed AdminPath /pagespeed_admin;

pagespeed EnableCachePurge on;

location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { }
location /ngx_pagespeed_statistics {  }
location /ngx_pagespeed_message { }
location /pagespeed_console { }
location ~ ^/pagespeed_admin { }
#######  ngx_pagespeed  #######

以上绝大部分都是过滤器参数的设置,建议查阅官方文档《Configuring PageSpeed Filters》。由于各种原因不太可能所有的过滤器都适用,所以可以一个一个过滤器添加看效果。

最后,关于文件缓存目录的设置,建议将缓存目录绑定到tmpfs这个文件系统下的路径内,提高缓存的速度。

mkdir  /dev/shm/ngx_pagespeed_cache
mount --bind /dev/shm/ngx_pagespeed_cache /alidata1/ngx_pagespeed_cache


知识共享许可协议本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。作者:柴宏俊»