在debian(ubuntu)下apache2更换为nginx

使用VPS使用apache2 + mysql + php5 + wordpress搭建网站的时候,由于个人网站VPS比较小,只有512M,而apache2是吃内存大户,无论是设置swap分区,还是优化配置,最终的结果还是系统不断宕机、或者进程由于内存过满从而被杀(一般情况是mysql服务会被杀)。表现出来的结果就是连网站会出现“无法连接数据库”错误。

LAMP的方式对于512M的VPS来说,真的是灾难,如果要升级硬件的话,对于个人用户来说,是难以承受。于是便考虑将apache2换成nginx。nginx的优点不用多说,就是占用资源少这一点,就足以让我心动。

一、安装

假设已经安装了LAMP+wordpress并且运行成功,并且以下所有命令均在普通用户执行(有sudo权限,如果没有,那就切换成root用户)。为了方便更换而不出现奇怪的错误,一切采用默认的配置。

1、首先将原有服务停止

$ sudo service apache2 stop
$ sudo service mysql stop

2、再安装nginx

$ sudo apt-get install nginx

这个时候试试登陆网站。如果出现nginx的首页说明安装成功。

3、安装php的相关组件,其中php5-fpm负责与nginx相互通信。

$ sudo apt-get install php5-cli php5-curl php5-gd php5-fpm

二、配置

4、配置nginx

$ sudo vim /etc/nginx/sites-available/defaut

大约在20行的位置会看到

root /site;
index index.html index.htm;

其中/site是系统默认的网站的根目录位置,可将其直接替换为wordpress的网站根目录,一般为/var/www;在index后加上php,如下所示

root /var/www;
index index.php index.html index.htm;

再接着将55行到66行的注释去掉(整个location)并改为如下所示:

location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        #include /etc/nginx/fastcgi_params;

        # With php5-cgi alone:
        #fastcgi_pass 127.0.0.1:9000;
        # With php5-fpm:
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
}

保存并关闭

5、配置fpm

$ sudo vim /etc/php5/fpm/pool.d/www.conf

在约33行的位置上改为:

listen = 127.0.0.1:9000
listen = /var/run/php5-fpm.sock

另外将listen.mode = 0660前面的注释;去掉

6、重启服务

$ sudo service php5-fpm restart
$ sudo service nginx restart
$ sudo service mysql start

至此应该就可以访问网站了。如果还未能访问,那么就可查看/var/log/nginx下的日志文件,看看问题出在哪儿。

三、可能出现的问题

3.1 php空白页

现象:

安装完nginx以后,发现html页面能正常浏览,但php文件的页面打开后是一片空白,
查看php-fpm日志与nginx日志都没找到问题。

解决方案: 只需在fastcgi_param这个文件中添加下面几句话即可:

$ sudo vim /etc/nginx/fastcgi_param

然后在后面添加(最好先查看有没有,如果没有就添加):

fastcgi_param SCRIPT_FILENAME   $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO         $fastcgi_script_name;

再重启nginx服务即可。

四、后记

不得不说,nginx的资源占用就是少,apache2下400M完全不够用,1G 的swap都被吃完,由于内存不足,所以设置不断释放内存,导致cpu占用过高(虽然最后排查发现是有ip不断的恶意攻击所致)。现在在nginx下,内存不过区区200多M,更没有cpu负荷过满的情况。不过由于采用的是默认的配置,以后的运行的时候是否还会出现问题,有待进一步观察。

此条目发表在网络建站分类目录,贴了标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。