Nginx命令行及演示:重载、热部署,日志切割

Nginx命令行及演示:重载、热部署,日志切割

Nginx命令行

  • 格式:nginx-s reload
  • 帮助:-?-h
  • 使用指定的配置文件:-c
    • 默认的情况下,我们编译出来的Nginx会寻找我们执行configure时指定的位置的配置文件,但是在命令行中可以人为的指定另一个配置文件, -c 加上配置文件的路径
  • 指定配置指令:-g
    • 在nginx configure目录里有很多条指令,但是那些指令需要在命令行中覆盖中间的一些指令,可以使用-g做到
  • 指定运行目录:-p
    • 运行目录下会有很多子目录,,比如说log,如果我们指定了运行目录,它会把我们在configure中定义好的目录替换掉
  • 发送信号:s
    • nginx操作运行进程的方法一般是发送信号,既可以通过linux kill命令,也可以通过nginx -s这个子命令,这个子命令后可加
      • 立刻停止服务:stop
      • 优雅的停止服务:quit
      • 重载配置文件:reload(但是是用优雅的停止服务这种方式)
      • 重新开始记录日志文件:reopen (也就是说换一个nginx日志文件,会新打开一个文件重头记录)
  • 测试配置文件是否有语法错误:-t   -T   
    • 改了配置文件以后不知道有没有语法错,测试配置文件
  • 打印nginx的版本信息、编译信息等:-v -V
    • -v  查看版本信息
    • -V 编译它的时候,用configure这个脚本执行的时候所加的所有的参数都可以在这里看到

重载配置文件

  • 修改nginx配置文件中的一些值在安装的目录下  有conf   sbin)
    • 比如vim  conf/nginx.conf   将#tcp_nopush on;去掉#,打开。
    • 当修改完配置文件后在sbin目录下直接执行  ./nginx -s reload
      • 这样nginx不停止对客户服务情况下,使用了tcp_nopush on这个新的配置项

热部署

  • nginx正在运行,现在想更换最新版本的nginx

  • 假如现在下载了一个更新的nginx,首先将现有的nginx二进制文件备份,因为我更换的只是二进制文件,不更换其他文件
cp nginx nginx.old

  • 接下来,需要把我们编译好的最新版本的nginx二进制文件拷贝到这个目录中替换现在进程正在使用的nginx文件

  • 给正在运行的nginx的master进程发一个信号,告诉他我们开始热部署了,做一次版本升级。
    • 这时我们给master发一个信号kill -USR2  45223(master进程号)
  • 接下来我们会看到nginx master进程会新起一个nginx master进程
    • 新的master进程使用了我们刚刚复制进来的nginx二进制文件来启动的
  • 老的worker也在运行,新的master生成新的worker,他们平滑地会把所有请求过渡到新的二进制文件中,nginx起的进程中

  • 新老master,worker进程都在运行,老的worker进程已经不再监听80这样的web端口了,所有新的请求新的连接只会进入新的nginx进程中
  • 这个时候,我们需要向老的nginx进程发送一个信号,kill -WINCH 45223,告诉它请优雅的关闭你的所有的worker进程

  • 老的worker进程已经退出了,老的master进程还在,但是没有对应的worker进程了,这说明所有的请求已经切换到我们新设计的nginx中了
    • 但是我们肯会发现一些问题,需要将新版本退回到老版本,对于45223,还可以发送reload命令,让它重新将worker进程拉起来,再把新版本关闭,所以说老的master进程是不会退出的,保留在这里,允许我们做版本回退

日志切割

  • 需要把当前的日志备份到另外的文件中,但是nginx还是正常运行的
    • 如 logs目录下 xxx.log
    • 在logs目录下先拷贝一份放在另一个位置mv xxx.log bak.log
    • 接着 ../sbin/nginx -s reopen
    • nginx 重新生成一个xxx.log ,原先log备份成bak.log,这样我们就实现了日志切割
  • 可以写成bash脚本,先复制文件脚本,在执行reopen命令
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值