热部署的原理

345 阅读1分钟

热部署的流程:

  • 使用新的/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并不会使用新的二进制文件。