页面

2009年4月7日

在96M内存的VPS上跑高性能的LAMP应用

通常情况下,在一个96M内存的VPS上安装apache2,mysql,php5之后再安装一个wordpress,那么apache在相应三五的连接请求之后,VPS的内存就几乎快要用完了,这时候如果连接请求不断增加,VPS将会内存耗尽,内存耗尽之后,无论有没有swap,CPU的占有率就会很高。我们RasHost VPS已经有很多客户都碰到过这种情况。实践证明,96M内存的VPS使用Apache跑PHP的应用不能支持大的并发。主要原因就是apache+mod_php的内存占用比较高。

为了解决这个问题,我们采用了Nginx+FastCGI PHP+MySQL的方案。Nginx是Web Server的后起之秀,性能比Apache高出不少。实践证明Nginx+FastCGI PHP+MySQL比Apache+PHP要节省资源!

在Linux VPS下配置Nginx+FastCGI PHP+MySQL需要如下几个步骤:

  1. 配置nginx+fastcgi php+mysql的环境
  2. 安装wordpress
  3. 配置nginx URL rewrite用以支持wordpress的永久链接。

对于第一步,请参考我们以前的博客:

  1. 在Ubuntu 8.04 LTS(hardy)下安装配置nginx和fastcgi方式的php
  2. 在CentOS5下安装配置nginx+fastcgi php+mysql

对于第二步,安装wordpress跟在apache下一样,不再罗嗦了。安装完wordpress后就可以正常使用了,如果想要启用wordpress的不带问号方式的永久链接,则需要进行第三步。

第三步,我配置的永久链接是这个形式:/index.php/%year%/%monthnum%/%day%/%postname%/ 要达到这种效果需要修改nginx的配置文件/etc/nginx/sites-enabled/default中的相应内容为:

location / {
root /var/www/nginx-default;
index index.php index.html index.htm;
if (!-e $request_filename) {
rewrite ^(.+)$ /blog/index.php?q=$1 last;
}
}

增加的部分就是这个if语句。这个if语句的意思是:如果碰到一个连接请求($request_filename),而这个连接请求所代表的文件是不存在的(!-e表示不存在,熟悉bash编程的人应该能看出来),那么将改写这个请求的URL,改写方式按照这个rewrite语句进行。

然后重启nginx就可以了,一个96M内存的VPS上的高性能的WordPress就有了!这个配置能跑多少个并发还有待测试!

欢迎转载,请注明转载自: http://vpsblog.rashost.com/20080601-nginx-wordpress

没有评论: