需求:

旧的nginx版本:

root@mysql243:~# ll /usr/local/|grep nginx

lrwxrwxrwx  1 root      root        25 2014-03-11 19:03 nginx -> /usr/local/nginx-1.4.2-gz/

打算升级到最新的nginx-1.6.2

1.使用初始化脚本nginx_install.sh 安装新版nginx-1.6.2  

cp nginx.conf /usr/local/nginx-1.6.2/conf/  #拷贝旧的nginx.conf

cp -a sites /usr/local/nginx-1.6.2/conf/

#先检查语法是否错误

root@mysql243:~# /usr/local/nginx-1.6.2/sbin/nginx -t -c /usr/local/nginx-1.6.2/conf/nginx.conf

nginx: the configuration file /usr/local/nginx-1.6.2/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx-1.6.2/conf/nginx.conf test is successful

2.mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

 

3.拷贝重编译的nginx

cp /usr/local/nginx-1.6.2/sbin/nginx /usr/local/nginx/sbin/

 

4.平滑的升级nginx二进制文件

kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`

root     35568  1.0  0.0  30588  2980 ?        S    16:30   0:00 nginx: master process /usr/local/nginx/sbin/nginx

nobody   35569  2.0  0.0  47560 18408 ?        S    16:30   0:00 nginx: worker process      

nobody   35570  1.0  0.0  47560 18408 ?        S    16:30   0:00 nginx: worker process      

nobody   35571  4.0  0.0  47984 19264 ?        S    16:30   0:00 nginx: worker process      

nobody   35572  2.0  0.0  47560 18408 ?        S    16:30   0:00 nginx: worker process      

nobody   35573  2.0  0.0  47832 19040 ?        S    16:30   0:00 nginx: worker process      

nobody   35574  1.0  0.0  47560 18408 ?        S    16:30   0:00 nginx: worker process      

nobody   35575  1.0  0.0  47560 18408 ?        S    16:30   0:00 nginx: worker process      

nobody   35576  1.0  0.0  47560 18392 ?        S    16:30   0:00 nginx: worker process      

root     35581  0.0  0.0   7640  1016 pts/12   S+   16:30   0:00 grep --color=auto nginx

root     60574  0.0  0.0  30572   956 ?        Ss   Dec22   0:00 nginx: master process /usr/local/nginx/sbin/nginx

nobody   60575  0.9  0.0  49652  9800 ?        S    Dec22 125:44 nginx: worker process      

nobody   60576  0.9  0.0  47088 11604 ?        S    Dec22 125:37 nginx: worker process      

nobody   60577  0.9  0.0  47444  7908 ?        S    Dec22 125:33 nginx: worker process      

nobody   60578  0.9  0.0  47160 11592 ?        S    Dec22 127:54 nginx: worker process      

nobody   60579  0.9  0.0  47380  7764 ?        S    Dec22 126:20 nginx: worker process      

nobody   60580  0.9  0.0  47452 12496 ?        S    Dec22 127:52 nginx: worker process      

nobody   60581  0.9  0.0  48204  9192 ?        S    Dec22 127:09 nginx: worker process      

nobody   60582  0.9  0.0  47280 11932 ?        S    Dec22 126:26 nginx: worker process

5.从容关闭旧版本的worker进程(等待关闭worker进程,可能需要处理一小会)

kill -WINCH `cat /usr/local/nginx/logs/nginx.pid.oldbin`

root     35568  0.0  0.0  30588  2980 ?        S    16:30   0:00 nginx: master process /usr/local/nginx/sbin/nginx

nobody   35569  2.2  0.0  51340 22680 ?        S    16:30   0:00 nginx: worker process      

nobody   35570  0.0  0.0  47832 18940 ?        D    16:30   0:00 nginx: worker process      

nobody   35571  1.3  0.0  47984 19484 ?        S    16:30   0:00 nginx: worker process      

nobody   35572  0.5  0.0  47832 19128 ?        S    16:30   0:00 nginx: worker process      

nobody   35573  1.0  0.0  48100 19536 ?        S    16:30   0:00 nginx: worker process      

nobody   35574  0.0  0.0  47560 18476 ?        S    16:30   0:00 nginx: worker process      

nobody   35575  0.0  0.0  47560 18476 ?        S    16:30   0:00 nginx: worker process      

nobody   35576  0.0  0.0  47832 18972 ?        D    16:30   0:00 nginx: worker process      

root     35601  0.0  0.0   7640  1012 pts/12   S+   16:30   0:00 grep --color=auto nginx

root     60574  0.0  0.0  30572   956 ?        Ss   Dec22   0:00 nginx: master process /usr/local/nginx/sbin/nginx

nobody   60575  0.9  0.0  48576  9016 ?        D    Dec22 125:45 nginx: worker process is shutting down

nobody   60576  0.9  0.0  46940 11500 ?        D    Dec22 125:37 nginx: worker process is shutting down

nobody   60577  0.9  0.0  47444  8040 ?        D    Dec22 125:33 nginx: worker process is shutting down

nobody   60578  0.9  0.0  49720 14280 ?        D    Dec22 127:54 nginx: worker process is shutting down

nobody   60579  0.9  0.0  47380  7896 ?        D    Dec22 126:20 nginx: worker process is shutting down

nobody   60580  0.9  0.0  47452 12620 ?        D    Dec22 127:52 nginx: worker process is shutting down

nobody   60581  0.9  0.0  46848  7856 ?        D    Dec22 127:09 nginx: worker process is shutting down

nobody   60582  0.9  0.0  47280 12064 ?        D    Dec22 126:26 nginx: worker process is shutting down

过了一会之后再查看,已经关闭好了

root@mysql243:/usr/local/nginx/sbin# ps aux|grep nginx

root     35568  0.0  0.0  30588  2980 ?        S    16:30   0:00 nginx: master process /usr/local/nginx/sbin/nginx

nobody   35569  1.5  0.0  51340 22768 ?        S    16:30   0:01 nginx: worker process      

nobody   35570  0.7  0.0  47988 19436 ?        S    16:30   0:00 nginx: worker process      

nobody   35571  0.6  0.0  48288 19664 ?        S    16:30   0:00 nginx: worker process      

nobody   35572  0.7  0.0  48836 20368 ?        S    16:30   0:00 nginx: worker process      

nobody   35573  0.7  0.0  48100 19636 ?        S    16:30   0:00 nginx: worker process      

nobody   35574  0.6  0.0  48364 19736 ?        S    16:30   0:00 nginx: worker process      

nobody   35575  0.8  0.0  48564 20072 ?        S    16:30   0:01 nginx: worker process      

nobody   35576  1.2  0.0  49080 20536 ?        S    16:30   0:01 nginx: worker process      

root     36007  0.0  0.0   7640  1012 pts/12   S+   16:32   0:00 grep --color=auto nginx

root     60574  0.0  0.0  30572   964 ?        Ss   Dec22   0:00 nginx: master process /usr/local/nginx/sbin/nginx

6.关闭旧版本的nginx进程

kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`

root@mysql243:/usr/local/nginx/sbin# ps aux|grep nginx

root     35568  0.0  0.0  30588  2980 ?        S    16:30   0:00 nginx: master process /usr/local/nginx/sbin/nginx

nobody   35569  1.2  0.0  47964 19500 ?        S    16:30   0:01 nginx: worker process      

nobody   35570  0.6  0.0  47988 19436 ?        S    16:30   0:01 nginx: worker process      

nobody   35571  0.8  0.0  48432 19944 ?        S    16:30   0:01 nginx: worker process      

nobody   35572  1.0  0.0  50120 21552 ?        S    16:30   0:01 nginx: worker process      

nobody   35573  0.9  0.0  48408 19808 ?        S    16:30   0:01 nginx: worker process      

nobody   35574  0.5  0.0  48364 19736 ?        S    16:30   0:00 nginx: worker process      

nobody   35575  0.9  0.0  48564 20076 ?        S    16:30   0:01 nginx: worker process      

nobody   35576  0.9  0.0  47768 19304 ?        S    16:30   0:01 nginx: worker process      

root     36146  0.0  0.0   7640  1012 pts/12   S+   16:33   0:00 grep --color=auto nginx

7.删除旧的软链接,创建新的软链

cd /usr/local

rm -f nginx

ln -s /usr/local/nginx-1.6.2 nginx

 

8.观察access.log 是否正常