热部署的流程:
-
使用新的/sbin/nginx 文件替换旧的/sbin/nginx文件,nginx文件是编译之后的二进制文件。这里要主要记得备份,方便回滚。
-
向master进程发送USR2信号,告诉nginx要开始进行热部署了,现在只能通过发送信号的形式,不能通过命令行。
-
master进程会将logs/nginx.pid文件改为nginx.oldbin文件,并生成一个新的nginx.pid文件,内容为新的master的pid。
-
master进程用新的/sbin/nginx文件启动新的master进程。
-
之后,我们要手动的发送QUIT信号给旧的master进程,关闭旧的master进程。
1、如何回滚?
将旧的/sbin/nginx文件复原,向旧的master进程发送HUP信号,相当于重新reload,向新的master进程发送QUIT信号。
2、新的master进程启动之后,它会自动的启动worker进程,所以在一段时间内,会存在两个master进程和两个worker进程。
3、当master进程关闭后,worker进程并不会立即关闭,worker进程会变成孤儿进程,被init(进程号为1)进程收养,知道处理完所有的请求之后,worker进程才会关闭。
4、新的master进程是旧的master进程所创建的。
5、不能直接替换二进制文件,然后reload,因为reload并不会使用新的二进制文件。