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。
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