标签:就是 end 日志切割 and 客户端 进制 image ecif 注意
nginx 通过信号来控制。对应linux系统就是用kill
命令。
The command kill sends the specified signal to the specified process or process group. If no signal is specified, the TERM signal is sent.
master进程id在默认写入到/nginx/logs/nginx.pid
文件中。文件也可以在nginx.conf
文件中指定。master进程支持以下信号:
kill -TERM `cat ./logs/nginx.pid` #快速停止master进程。
kill -QUIT `cat ./logs/nginx.pid` #优雅的停止。
kill -HUB `cat ./logs/nginx.pid` #改变配置文件。开启一个新的worker进程处理,优雅的停止老的worker 进程。相当于nginx -s reload
kill -USR1 `cat ./logs/nginx.pid` #重新打开log文件。-s reopen命令
kill -USR2 `cat ./logs/nginx.pid` #升级可执行文件。热部署
kill -WINCH `cat ./logs/nginx.pid` #优雅的关闭worker进程。
每个worker进程也可以接收信号:
kill -TERM xxx #快速关闭worker进程
kill -QUIT xxx #优雅退出
kill -USR1 xxx #重新打开日志文件,先mv一个,再去执行这个命令。-s reopen命令
备份一下原先的nginx文件。
把新的nginx二进制文件放到原先相同目录下。
给master进程发送USR2信号。
master进程会把logs/nginx.pid
文件复制一份为logs/nginx.pid.oldbin
,然后运行新的nginx文件,生成新的worker进程。
新老master和worker共存。(如果没有成功可以看logs/error.log
是否有日志)
给老master进程发送WINCH
信号,老master就会发送信号让他对应的worker进程优雅的退出。QUIT信号。
然后就剩新的master和worker进程,以及老的master进程。
注意:老的master进程不会退出。可以用于必要时候的回滚操作。有两种情况。
nginx.conf
的方式启动新的worker进程。然后再给新的master进程发送QUIT信号让他优雅的退出。如果回滚,那么第四步的nginx.pid.oldbin
文件会被丢弃。
如果升级成功,就给老的master进程发送QUIT
信号,让其优雅的退出。
标签:就是 end 日志切割 and 客户端 进制 image ecif 注意
原文地址:https://www.cnblogs.com/sheldon-lou/p/12355173.html