nginx-平滑升级
1.下载高版本nginx,然后将其解压,然后cd进入解压后目录(本人第一次安装的版本是1.16.1)
2.执行指令
$: ./configure
$:make #不能执行 make install 千万记住
$:cd objs 此目录下,有高版本的nginx,将此目录下的nginx拷贝到之前nginx安装目录/usr/local/nginx/sbin下面,替换之前之前的nginx,替换之前将/usr/local/nginx/sbin下面原先的nginx进行备份保存。
$:cp -rfp objs/nginx /usr/local/nginx/sbin 执行强制覆盖
$:/usr/local/nginx/sbin/nginx -t 测试一下新复制过来文件生效情况:
3.执行信号平滑升级
$: kill -USR2 `cat /usr/local/nginx/logs/nginx.pid` (` 这个里面就是填一个nginx版本的进程号即可` ) 更新配置文件,给nginx发送USR信号,nginx会将logs/nginx.pid文件重命名为nginx.pid.oldbin ,然后用新的可执行文件启动一个新的nginx主进程和对应的工作进程,并新建一个新的nginx.pid保存新的主进程号。


4. 将旧的进程优雅的干掉
$:kill -WINCH 旧的主进程号 旧的主进程号收到WINCH信号后,将旧进程号管理的旧工作进程优雅的关闭,即一段时间后旧的工作进程全部关闭,只有新的工作进程在处理请求连接,这是,依然可以恢复到旧的进程服务,因为旧进程的监听socket还为停止


5.此时如果想停止升级,回滚到旧的nginx,不再进行升级时的操作。
$: kill -HUP 旧主进程号 给旧的主进程号发送HUP命令,此时nginx不重新读取配置文件的情况下重新启动旧主进程的工作进程。
$: kill -QUIT 新主进程号 然后再将新的主进程优雅的关闭。此时旧回滚到之前的旧的nginx了。

6.如果不回退的话,执行WINCH命令之后,执行下面的操作
$:kill -QUIT 旧的主进程号 给旧的主进程发送QUIT信号后,旧的主进程退出,并移除logs/nginx.pid.oldbin 文件,nginx的升级完成。
7.查看版本是否已经平滑升级
$:./nginx -v
