服务器上跑的lnmp1.2 1.0与1.3大同方法一样,注意把路径中的1.2修改为相应版本即可
ssh连接上去后,按以下步骤执行即可
安装ngx_cache_purge
查看是否安装
1 | nginx -V 2>&1 | grep -o ngx_cache_purge |
显示ngx_cache_purge则表示已经安装.
未安装,按以下步骤,下载模块源码并解压,依次执行即可
1 2 3 4 | cd /root/lnmp1.2-full/src wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz tar xzf ngx_cache_purge-2.3.tar.gz cd nginx-1.8.0 |
查看以前Nginx编译参数
1 | nginx -V |
显示以前编译的参数如下
1 2 3 4 5 6 | nginx version: nginx/1.8.0 built by gcc 4.1.2 20080704 (Red Hat 4.1.2-55) built with OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008 TLS SNI support disabled configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_spdy_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_spdy_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module |
配置中增加新模块ngx_cache_purge-2.3
1 | ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_spdy_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module <strong>--add-module=../ngx_cache_purge-2.3</strong> |
开始编译,注意不要make install,只需要make
1 | make |
备份原来的Nginx编译文件,文件名称自动变成了nginx_2016-xx-xx(日期)
1 | mv /usr/local/nginx/sbin/nginx{,_`date +%F`} |
拷贝新的编译文件过去
1 | cp objs/nginx /usr/local/nginx/sbin |
检查是否编译ngx_cache_purge成功
1 | nginx -V 2>&1 | grep -o ngx_cache_purge |
若显示ngx_cache_purge则表示已经安装成功
修改WordPress配置,添加fastcgi_cache相关配置
这里我们将fastcgi_cache_path设置tmpfs内存中,这样比放在硬盘上更加快
什么是tmpfs内存?
tmpfs最主要的几个特点:
- 临时性:由于tmpfs是构建在内存中的,所以存放在tmpfs中的所有数据在卸载或断电后都会丢失;
- 快速读写能力:内存的访问速度要远快于磁盘I/O操作,即使使用了swap,性能仍然非常卓越;
- 动态收缩:tmpfs一开始使用很小的空间,但随着文件的复制和创建,tmpfs文件系统会分配更多的内存,并按照需求动态地增加文件系统的空间。而且,当tmpfs中的文件被删除时,tmpfs文件系统会动态地减小文件并释放内存资源。
简而言之:tmpfs就是linux文件系统在内存中划了一块区域,专门用来存放临时数据和缓存数据的,但是数据读取非常快
注意:操作系统不同tmpfs挂载路径也不同,如下:
CentOS系统:/dev/shm 我用的centos 故是/dev/shm/
Ubuntu和Debian系统:/run/shm
修改WordPress网站的Nginx配置文件,路径/usr/local/nginx/conf/vhost/XXXX.conf xxxx是你的网站的配置文件名称
1 2 3 4 5 6 7 8 9 | #新增的缓存规则part1开始 #下面2行的中的wpcache路径请自行提前创建,否则可能会路径不存在而无法启动nginx,max_size请根据分区大小自行设置 fastcgi_cache_path /dev/shm/ levels=1:2 keys_zone=WORDPRESS:200m inactive=1d max_size=350M; fastcgi_temp_path /dev/shm/temp; fastcgi_cache_key "$scheme$request_method$host$request_uri"; fastcgi_cache_use_stale error timeout invalid_header http_500; #忽略一切nocache申明,避免不缓存伪静态等 fastcgi_ignore_headers Cache-Control Expires Set-Cookie; #新增的缓存规则part1完 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | server { listen 80; #listen [::]:80; server_name xiaohost.com; index index.html index.htm index.php default.html default.htm default.php; root /home/wwwroot/xiaohost.com; #新增的缓存规则part2开始 set $skip_cache 0; #post访问不缓存 if ($request_method = POST) { set $skip_cache 1; } #动态查询不缓存 if ($query_string != "") { set $skip_cache 1; } #后台等特定页面不缓存(其他需求请自行添加即可) if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") { set $skip_cache 1; } #对登录用户、评论过的用户不展示缓存(这个规则张戈博客并没有使用,所有人看到的都是缓存) if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") { set $skip_cache 1; } #这里请参考你网站之前的配置,特别是sock的路径,弄错了就502了! #新增的缓存规则part2完 location ~ [^/]\.php(/|$) { # comment try_files $uri =404; to enable pathinfo try_files $uri =404; fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; include fastcgi.conf; #include pathinfo.conf; #新增的缓存规则part3开始 fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; add_header X-Cache "$upstream_cache_status From $host"; fastcgi_cache WORDPRESS; fastcgi_cache_valid 200 301 302 1d; #新增的缓存规则part3完 } #新增的缓存规则part4开始 #缓存清理配置(可选模块,请细看下文说明) location ~ /purge(/.*) { allow 127.0.0.1; allow "此处填写你服务器的真实外网IP"; deny all; fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1"; } #新增的缓存规则part4完 include wordpress.conf; #error_page 404 /404.html; location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 7d; } access_log off; # 若开启log日志,去掉相应的注释#即可开启相应功能 #robots.txt 不进行记录 #location=/robots.txt{access_log off;log_not_found off;} # favicon.ico 不进行记录 #location=/favicon.ico{access_log off;log_not_found off;} # 隐藏文件 不进行记录且禁止访问 #location~/\.{access_log off;log_not_found off;deny all;} } server { server_name www.xiaohost.com; return 301 $scheme://xiaohost.com$request_uri; } |
修改完毕保存后,重启Nginx
1 | service nginx reload |
若采用超过二级的缓存路径,重启系统后shm内存中nginx-cache文件夹会丢失,为了使重启生效(自动创建文件夹),修改/etc/init.d/nginx
以下代码加入start那段中
1 2 3 4 | if [ ! -d '/dev/shm/你的缓存文件夹' ]; then mkdir /dev/shm/你的缓存文件夹 chown -R ${user}.$user /dev/shm/你的缓存文件夹 fi |
WordPress安装Nginx Helper插件
修改wordpress网站根目录wp-config.php添加如下行:
define(‘RT_WP_NGINX_HELPER_CACHE_PATH’,’/dev/shm’);
重启服务器
评论2