跳到正文

将wordpress从apache迁移到nginx了

2011 三月 10

这几天跑在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;
	}

参考

抢沙发

絮叨请保持队形

嘿,你的电邮只会用来显示你在 Gravatar 上的头像。

订阅评论

无觅相关文章插件,快速提升流量