升级nginx从0.5.37到0.6.33版本

Gavin [Web服务器]

2008.11.25

前言:服务器上的Nginx原来版本是0.5.37,但在使用过程中发现rewrite时Nginx总会将url中的’+'字符转成编码’%2b’,造成我程序的一些问题。听说0.6版本已经解决了这个问题,并且虽然0.7版本已经出到0.7.22了,但官方还是开发版,所以就升级到0.6的最新版本0.6.33,问题果然解决。升级过程本来想用make update的方式,但考虑到是大版本的升级(0.5->0.6),为了避免不必要的麻烦,就用重新编译安装、并覆盖原来配置文件的方式升级了。虽然过程比较简单,但还是有一些地方是需要注意的,特记下来备忘。


1、下载0.6.33版本

1
$wget http://sysoev.ru/nginx/nginx-0.6.33.tar.gz

2、停止原来Nginx服务器:

1
2
3
#ps -ef | grep "nginx: master process" | grep -v "grep" | awk -F ' ' '{print $2}'
2816
#kill -QUIT 2816

3、备份原来安装文件

1
#mv /usr/local/nginx/ /usr/local/nginx-0.5.37/

4、重新安装nginx

1
2
3
4
5
$tar zxvf nginx-0.6.33.tar.gz
$cd nginx-0.6.33
$./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
$make
#make install

5、Copy原来的nginx.conf, fcgi.conf文件和vhost/目录到新版本的对应目录(注:我是将虚拟机server的配置放在vhost目录下,然后在nginx.conf中include进来,如果你的虚拟机配置如参考文档1和2那样都放在nginx.conf里面,则没有相应的vhost目录)

1
2
3
4
5
#cd /usr/local/nginx/conf/
#mv nginx.conf nginx.conf.sample
#cp ../../nginx-0.5.37/conf/nginx.conf .
#cp ../../nginx-0.5.37/conf/fcgi.conf .
#cp -rf ../../nginx-0.5.37/conf/vhosts/ .

注意,相比较0.5版本,0.6版本的配置文件根已经由原来的安装根目录(/usr/local/nginx/)转移到conf/目录(/usr/local/nginx/conf/)下,所以nginx.conf配置文件的相应路径要修改:
include conf/mime.types; => include mime.types;
include conf/fcgi.conf; => include fcgi.conf;

6、启动Nginx

1
#/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

参考文档:
1、http://blog.s135.com/post/314.htm
2、http://blog.s135.com/post/351.htm


有1条评论

  1. 网上有个方法可以在不间断服务器的情况下升级Nginx版本:
    http://bbs.chinaunix.net/viewthread.php?tid=1283047

评论

输入后可按 Ctrl+Enter 提交评论.