将wordpress从apache迁移到nginx了
这几天跑在linode的ubuntu 10.04的disk IO总是告警,而且博客访问也出现了长时间异常。之前偶尔出现,不大会影响博客访问,而且不久就能恢复,可这次问题看上去很严重,于是考虑尝试找找原因。首先,停掉了大家的ssh tunnel,告警依然。于是在linode上open了一个ticket,客服的响应倒是很快,给了我一个诊断是“OOMing”即内存耗尽,并且给了我一个网址参考。当晚我按照步骤优化了apache和mysql,暂时看上去风平浪静了。可第二天在系统没有任何负载异常的情况下,博客打不开了。咨询朋友后矛头基本指向Apache,而且都强烈建议更换为更轻量的nginx(EngineX)+php(fastcgi)。经过一下午折腾,终于初步迁移完成。下面记录几个遇到的问题。
spawn-fcgi还是php-fpm
很多地方介绍spawn-fcgi的配置方式,包括linode libary中的文章,可如果你的主机是ubuntu10.04或更新的版本,还是推荐使用php-fpm。理由是php原生支持,高效,简单。方法如下:
1.在/etc/apt/source.list末尾加入如下含有php5-fpm的非官方源
deb http://ppa.launchpad.net/jdub/devel/ubuntu maverick main deb http://ppa.launchpad.net/brianmercer/php/ubuntu lucid main deb-src http://ppa.launchpad.net/brianmercer/php/ubuntu lucid main
2.更新源及安装nginx和php5-fpm
sudo apt-get update ->这里会提示需要pubkey,无视 sudo apt-get install nginx php5-fpm
3.启动nginx
sudo /etc/init.d/nginx start
4.测试nginx
在浏览器输入刚刚配置的系统的ip,如果出现“welcome to nginx”就可以继续配置php啦。
不知如何配置nginx+php5-fpm
nginx配置对于刚接触的人来说还是挺繁琐的,不过nginx wiki提供了一些常见应用的配置。点击这里可以查看wordpress的配置。要注意的是,文中并没有提供fastcgi_param的配置,而只是包含了fastcgi.conf。但可能有的nginx安装目录中没有这个文件,而是名为fastcgi_params的文件,其实只是文件名不同而已。
如果主机上运行不止一个wordpress,完全可以在nginx的安装目录中创建一个名为wordpress的文件,并将server段中相同的内容都放进去,例如所有的location段。然后在每个server内直接include wordpress即可。
wordpress固定网址不生效
webserver将所有不存在的请求发送给wordpress的index.php,交由wordpress处理地址重写(rewrite)的工作。在server内加入如下代码即可:
if (!-e $request_filename)
{
rewrite ^(.+)$ /index.php?q=$1 last;
}
参考