Nginx重载、热部署、日志切割

本文介绍了Nginx的配置重载、热部署过程以及日志切割的方法。重载时,可以通过发送信号实现配置更新;热部署时,无需停止服务即可完成升级;日志切割则利用命令在不影响服务的情况下完成日志文件的管理和分离。

重载

修改了配置文件后,直接重新启动nginx,使用reload命令

./nginx -s reload

其中,-s有发送信息的作用。

热部署

重新编译了nginx的可执行程序后,可以通过不杀掉程序进行升级。首先备份原来的程序:

cp nginx nginx.old

之后,把新的可执行文件替换到原来的旧文件,替换后查看原来进程的pid号:

ps -ef | grep nginx

root 14459 1 0 21:33 ? 00:00:00 nginx: master process ./nginx

nobody 14590 14459 0 21:33 ? 00:00:00 nginx: worker process

root 14637 12131 0 21:34 pts/0 00:00:00 grep --color=auto nginx

这里可以知道nginx运行的pid号为14459,执行命令:

kill -USR2 14459

再次通过ps观看可以发现,新的master进程和旧的master进程同时在运行,但是请求会逐渐过渡到新的master进程中

root 14459 1 0 21:33 ? 00:00:00 nginx: master process ./nginx

nobody 14590 14459 0 21:33 ? 00:00:00 nginx: worker process

root 17398 14459 0 21:54 ? 00:00:00 nginx: master process ./nginx

nobody 17399 17398 0 21:54 ? 00:00:00 nginx: worker process

这时候,需要向老的进程发送信号,需要它逐渐关闭worker进程:

kill -WINCH 14459

之后,在通过ps查看运行进程:

root 14459 1 0 21:33 ? 00:00:00 nginx: master process ./nginx

root 17398 14459 0 21:54 ? 00:00:00 nginx: master process ./nginx

nobody 17399 17398 0 21:54 ? 00:00:00 nginx: worker process

可以发现,旧的master进程还在运行,这是为了假如新的进程运行出现问题,可以马上通过旧的master进程复原。没有问题之后我们可以把旧的master进程kill掉就可以了。

日志切割

在进程还在运行时候,日志逐渐变得很大,当想要把原来的日志切割出来,可以使用reopen命令实现。

-rw-r–r-- 1 root root 51 Feb 20 22:01 test.log

在logs目录下,把51B大小的日志拿出来,可以先把日志拿出来:

mv test.log test.log.bak
../sbin/nginx -s reopen

执行后日志test.log已经重新被覆写。

这样做较为麻烦,实际使用时候写个脚本实现。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值