Nginx的热更新方案
Nginx的热更新是通过多条信号命令组合完成,可粗略分为两个步骤:
1、通知老master启动新的master二进制文件。
2、通知老master进程优雅退出。
更新二进制
重命名之前的sbin/nginx文件,将新的nginx文件放到sbin/目录下。
#mv ./sbin/nginx ./sbin/nginx.old
#cp ~/nginx ./sbin/
启动新的nginx
向正在运行的nginx发送USR2信号启动新的nginx,这个时候新老nginx都会接收请求,看哪一个进程能抢到锁,抢到锁的worker进程可以accpet新请求。
#kill -USR2 `cat nginx.pid`
退出旧的nginx
观察新的nginx运行无误后,向旧nginx发信号 停止旧nginx的运行。
#kill -WINCH `cat nginx.pid.oldbin`
#kill -QUIT `cat nginx.pid.oldbin`