平滑升级
本篇目标:将现有的 nginx 1.22.0 版本升级为 1.24.0
//查看现有版本
[root@12 ~]# nginx -v
nginx version: nginx/1.22.0
1、首先在官网下载软件包,地址:nginx: download
2、把要 1.24.0 拖进 /opt 目录后,解压,编译安装
[root@12 ~]# cd /opt
//解压
[root@12 opt]# tar -zxvf nginx-1.24.0.tar.gz
[root@12 opt]# cd nginx-1.24.0/
#注意:安装的位置和上一个版本一致,老版本也在 /usr/local/nginx 目录下
[root@12 nginx-1.24.0]# ./configure --prefix=/usr/local/nginx \
> --user=nginx \
> --group=nginx \
> --with-http_ssl_module \
> --with-http_v2_module \
> --with-http_realip_module \
> --with-http_stub_status_module \
> --with-http_gzip_static_module \
> --with-pcre \
> --with-stream \
> --with-stream_ssl_module \
> --with-stream_realip_module
#编译结束后 make 即可,不要用 make install !
[root@12 nginx-1.24.0]# make
3、 在老版本目录下,把原来的执行文件改名字
[root@12 nginx-1.24.0]# cd /usr/local/nginx/sbin/
[root@12 sbin]# mv nginx nginx.bak
4、 将新版本拷入进去
[root@12 sbin]# cp /opt/nginx-1.24.0/objs/nginx /usr/local/nginx/sbin/
5、在老版本下,传递信号,平滑升级,实现热重载
[root@12 sbin]# kill -USR2 `cat /usr/local/nginx/run/nginx.pid`
//查看nginx进程
[root@12 sbin]# ps auxf|grep nginx
root 24087 0.0 0.0 112708 972 pts/0 S+ 20:15 0:00 | \_ grep --color=auto nginx
root 24071 0.0 0.0 46240 1340 ? Ss 20:13 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nginx 24072 0.0 0.0 48776 2008 ? S 20:13 0:00 \_ nginx: worker process
root 24076 0.0 0.0 46240 3360 ? S 20:14 0:00 \_ nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nginx 24077 0.0 0.0 48780 2008 ? S 20:14 0:00 \_ nginx: worker process
6、 优雅退出老的进程
[root@12 sbin]# kill -WINCH `cat /usr/local/nginx/run/nginx.pid.oldbin`
//查看进程
[root@12 sbin]# ps auxf|grep nginx
root 24106 0.0 0.0 112708 972 pts/0 S+ 20:17 0:00 | \_ grep --color=auto nginx
root 24071 0.0 0.0 46240 1340 ? Ss 20:13 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
root 24076 0.0 0.0 46240 3360 ? S 20:14 0:00 \_ nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nginx 24077 0.0 0.0 48780 2008 ? S 20:14 0:00 \_ nginx: worker process
//查看版本
[root@12 sbin]# nginx -v
nginx version: nginx/1.24.0
至此,升级完成