ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Nginx系列p2:重载,热部署,日志分割

2019-10-10 22:01:31  阅读:199  来源: 互联网

标签:p2 配置文件 nginx worker Nginx master 进程 日志


  今天我们来学习 nginx 的 重载、热部署、日志分割功能

重载:当我们需要修改配置文件中的一些值,我们可以直接修改该配置文件,然后重新启动 nginx 服务,就可以实现在 nginx 不停止服务的情况下,使用了我们最新修改过的配置文件。

重载example:

step1:

# 打开配置文件,设置配置文件中的 tcp_nopush 选项为开启,然后保存退出
$ vim conf/nginx_conf

 

 step2: 重新启动 nginx 服务,此时 nginx 服务就可以使用新的配置文件了

$ sudo ./nginx -s reload

 

热部署:我们在不停止服务的情况下,对 nginx 重新进行部署。比如我们升级了 nginx 版本(又称版本升级),则该功能可以使我们的应用平滑的过渡到新部署的高版本的 nginx 服务上。

热部署 example:

step1: 首先以同样的方式编译更高版本的 nginx, 然后将高版本的 sbin/nginx 二进制可执行文件替换掉我们要升级的 nginx 服务用的 nginx 文件

# 注:该旧版本 nginx 服务正在运行的情况下进行下述操作
# 本机器开启的 nginx 服务版本为 nginx-1.12.2
# 重新编译的 nginx 版本为 nginx-1.16.1,安装目录为 nginx-16 文件夹下
# 用新编译生成的 nginx 二进制文件覆盖掉正在使用的 nginx 旧版本二进制文件

$ mv nginx nginx.old   // 备份一下旧版本的 nginx 文件
$ sudo cp /home/zhangpeng/nginx-16/sbin/nginx ./

此时查看一下我们正在运行的 nginx 服务:

 

 注:从上图可以看出 master 进程的 PID 为 3278,worker 进程的 PID 为 3287,父进程为 master 进程

step2: 向 master 进程发送 USR2 信号,此时再查看一下 nginx 进程

$ sudo kill -USR2 3278

 

 注:此时我们观察可以发现:给老的 master 进程发送 USR2 信号后,老的 master 进程生成了新 master, 新的 master 生成了新的 worker。同时老的 nginx 进程就不再监听 80 号端口了,这样就可以实现从老的 nginx 服务到新的 nginx 服务进行平滑过渡了。

step3:向老的 nginx master 进程发送 WINCH 信号告诉 master 进程请优雅的关闭你的 worker 进程

 

 注:此时可以发现:老的 nginx master 中的 worker 都已经全部关闭了,但是此时老的 nginx master 进程还存在。存在的原因是:有些情况下我们需要将版本退回到旧的版本,这时,我们就可以根据老的 nginx master 把它的 worker 进程再拉起来!(发送 RELOAD 信号拉起 worker,然后再关闭新的 master 进程就可以了)

日志分割:在 nginx 不停止运行的情况下,把当前的日志备份到另外一个文件中。

日志分割 example:

# 进入 logs 目录
# 将 error.log 备份为 error.log.bak 文件
# 此时重新开启 nginx 服务,发送 reopen 信号,会重新生成一个新的 error.log 文件
# 中间的日志文件不会有缺少

$ mv error.log error.log.bak
$ sudo ../sbin/nginx -s reopen

注:但是正常情况下,我们不会这样使用,我们一般会编写一个日志分割的脚本文件,然后定时执行这个脚本文件即可。一般我们用 crontab 来开启定时计划,在 Ubuntu 下,是系统默认安装的,直接使用即可,我会在 Ubuntu 分类下单独写一篇博客来介绍 crontab 的使用。

 

标签:p2,配置文件,nginx,worker,Nginx,master,进程,日志
来源: https://www.cnblogs.com/zpcoding/p/11650867.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有