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


      今天我们来学习 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 的使用。

  • 相关阅读:
    I/O FileInputStream 字节类型文件输入输出流 (汉字显示乱码)
    Date 获取日期 SimpleDateFormat
    Random 随机生成数
    String StringBuffer Arrays 字符串修改 拼接
    Math
    装箱 拆箱Integer .ValueOf()
    LinkedListTest
    springboot cache
    耀眼的明星--项羽
    耀眼的明星--百年虚云
  • 原文地址:https://www.cnblogs.com/zpcoding/p/11650867.html
Copyright © 2020-2023  润新知