目录 | Table of Contents
似乎是Github page及类似服务的兴起,wordpress博客没有以前热门了,大家都流行弄静态博客了。
不过我还是比较习惯Wordpress,毕竟用了这么多年,很多组件都再熟悉不过,修改起来也非常迅速,效率还是第一位嘛。现在hhvm和nginx的配合使用,博客运行起来也是非常地快。
hhvm的安装
hhvm倒是非常容易地安装,只要根据 Github上面的指示来做就行了。需要注意的事情是,hhvm在CentOS6.5里面似乎兼容得不好,所以如果想继续使用CentOS,就要升级到CentOS7。这时候数据库就换成了Mariadb,所以原来熟悉的MySQL就不能用了(其实都一样)。
具体细节请见 网站架构更换
hhvm对于PDO的支持似乎并不是那么地好,幸亏Wordpress没有太多的PDO方面的应用。
Nginx针对Wordpress的缓存设置
事实上,如果使用hhvm的话,缓存与否显得并不是那么地重要了。每生成一个页面只需要消耗4MB的内存而且通常情况下在500ms以内。但是如果网站更新不频繁的话,配置一下还是挺好的。
server { listen ipv4地址:443; listen ipv6地址:443; server_name note.masterchan.me; ssl on; ssl_certificate /etc/证书位置; ssl_certificate_key /etc/密匙位置; #enables all versions of TLS, but not SSLv2 or 3 which are weak and now deprecated. ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #Disables all weak ciphers ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"; ssl_prefer_server_ciphers on; root /var/www/网页目录 set $no_cache 0; #set $no_cache 1; # 不缓存POST操作 if ($request_method = POST) { set $no_cache 1; } # 不缓存后台 if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") { set $no_cache 1; } # 已登录的不缓存(防止留言串号) if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") { set $no_cache 1; } # 暂停缓存 set $no_cache 1; location / { index index.php; if (!-e $request_filename){ rewrite ^(.*)$ /index.php last; } } charset utf-8; keepalive_timeout 30s; location ~* \.(ico|jpg|png|gif|css|js)$ { expires 30d; log_not_found off; } location ~ \.php$ { add_header Cache-Control no-cache; #fastcgi_pass unix:/var/run/php-fpm/php-fcgi.sock; fastcgi_pass unix:/var/lib/hhvm/hhvm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param HTTPS on; include fastcgi_params; fastcgi_cache_bypass $no_cache; fastcgi_no_cache $no_cache; fastcgi_cache fcgicache; fastcgi_cache_valid 200 3d; fastcgi_cache_min_uses 3; fastcgi_cache_key "$host$request_uri"; } #for sitemap rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.xml$ "/index.php?xml_sitemap=params=$2" last; rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.xml\.gz$ "/index.php?xml_sitemap=params=$2;zip=true" last; rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.html$ "/index.php?xml_sitemap=params=$2;html=true" last; rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.html.gz$ "/index.php?xml_sitemap=params=$2;html=true;zip=true" last; }
关于fastcgi_cache 名称 的定义在nginx.conf文件里面
fastcgi_cache_path /var/www/fastcgi_cache levels=1:2 keys_zone=fcgicache:64m inactive=1d max_size=5g;
解决Wordpress偶尔的高TTFB问题
之前用wordpress的时候其实就有留意到,有时候ttfb竟然会突升至6秒以上,甚至达到了20秒。由于这个是偶然状态(平均刷10+次才出现一次),因此没有特别的注意。换上hhvm之后,wordpress的性能大幅提升,这个问题就显得非常明显了,感觉上不像是网页处理的问题,于是将MySQL的query全部都记录了下来。发现是一个叫 wp-cron 的东西,通过生产页面的时候随机触发这个部件并且校验时间,达到定时操作的目的(这个设计真的非常落后)。由于经常附带有一些联网检查更新的操作,所以执行时间非常长。因此关掉这个组件比较实际,我们可以通过在系统crond中设定达到真正地定时执行。
主要是在wordpress 地config文件 即wp-config.php 加入这样一行,即可禁用
/** 禁用wp-cron */ define('DISABLE_WP_CRON', true);
事实上,关闭这个之后wordpress的自动更新还是可以运作的,不知道为什么。