Nginx-3.控制nginx
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命令
更改配置文件
- 发送HUP信号给master进程。
- master检查新的配置文件语法是否合理。
- 如果合理,根据新的配置文件打开新的socket连接监听。会创建新的worker进程,然后通知老的worker进程优雅的关闭。老进程收到消息后完成当前客户端的请求,然后自动关闭。
- 如果不合理,回滚,使用原先的配置文件继续运行。
日志切割
- 手动重命名log文件。
- 给master进程发送USR1信号。
- 重新打开文件。
热部署
备份一下原先的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进程不会退出。可以用于必要时候的回滚操作。有两种情况。
- 给老的master进程发送HUP信号,它会以不读取
nginx.conf的方式启动新的worker进程。然后再给新的master进程发送QUIT信号让他优雅的退出。 - 给新的master进程发送TERM信号,它会通知自己的worker进程立即退出。如果退出不成功,使用kill让worker进程强制退出。新的master退出之后,老的master进程会自动启动新的worker进程。
如果回滚,那么第四步的nginx.pid.oldbin文件会被丢弃。
如果升级成功,就给老的master进程发送QUIT信号,让其优雅的退出。
Nginx-3.控制nginx的更多相关文章
- SHELL编写NGINX服务控制脚本
使用源码包安装的Nginx没办法使用"service nginx start"或"/etc/init.d/nginx start"进行操作和控制,所以写了以下的 ...
- 运行和控制Nginx
Nginx命令行选项 启动.停止.重启nginx命令 如何重新加载nginx配置文件 nginx程序不重启平滑升级可执行文件 nginx命令行参数 不像许多其他软件系统,Nginx 仅有几个命令行 ...
- 运行和控制Nginx——命令行参数和信号
参考资料: Nginx中文文档: http://www.nginx.cn/nginxchscommandline Nginx的启动.停止.平滑重启.信号控制和平滑升级:http://zachary-g ...
- 控制nginx并发链接数量和客户端请求nginx的速率
一.控制nginx并发链接数 ngx_http_limit_conn_module这个模块用于限制每个定义的key值的链接数,特别是单IP的链接数. 不是所有的链接数都会被计数,一个符合计数要求的连接 ...
- 使用python控制nginx禁封ip
python控制nginx禁封ip nginx中的access.log最近有大量的用户访问,怎么样屏蔽掉在一定时间段内访问次数多的ip呢? 测试准备: 两个tomcat,一个nginx做均衡负载,服务 ...
- 如何源码编译安装并控制nginx
安装nginx 注意 Linux操作系统需要2.6及其以上的内核(支持epoll) 使用nginx的必备软件 gcc编辑器 yum -y install gcc gcc-c++ pcre库(支持正则表 ...
- Nginx 目录结构、Nginx服务控制命令
# Nginx目录结构 # 首先推荐一个查看目录结构的工具 tree # yum install -y tree # sudo apt-get install -y tree ubuntu # 查看n ...
- 【夯实Nginx基础】Nginx工作原理和优化、漏洞
本文地址 原文地址 本文提纲: 1. Nginx的模块与工作原理 2. Nginx的进程模型 3 . NginxFastCGI运行原理 3.1 什么是 FastCGI ...
- Nginx配置文件(nginx.conf)配置详解(2)
Nginx的配置文件nginx.conf配置详解如下: user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes 8; 工作进程:数目 ...
- linux下配置nginx使用service nginx start 服务
解压出来后执行 mkdir /var/tmp/nginx/client/ -pv 接下来我们简单的为它提供一个服务脚本吧! # vim /etc/init.d/nginx 新建文件/etc/rc.d ...
随机推荐
- python修改获取xlsx数据
刚才要修改一个表格的数据,在网上搜了下方法,做出以下总结: 简单的取出数据以及写入数据 import xlrd data = xlrd.open_workbook(r'C:\Users\亦清\Desk ...
- step1:准备歌词之《前端开发是个啥》
以下是给大家介绍前端开发的填词,曲子是李圣杰的<最近>,大家喜欢可以试试唱. 点赞关注超过100的平台,我后续上来发本人原唱视频(目前正在练习中...),另外大家觉得哪些词写得不好的,欢迎 ...
- javascript A*算法 寻路算法 获取最短路径算法
//A算法 自动寻路 路径 class GetAutoPath{ constructor(id, map, sPos, ePos, mapArr){ //this.type = id.type; th ...
- 常用命令 find chmod
find path -option [ -print ] [ -exec -ok command ] {} \; find [指定查找目录] [查找规则] [查找 ...
- Solr系列2-Solr服务安装
1: Solr简介 1.1 简介: 1.2 下载: 2:Solr 安装 2.1 安装 2.2 目录结构 3 :启动Solr 3.1 启动 3.2使用Solr提供的测试数据 3.5 Solr配置文集 3 ...
- C#设计模式学习笔记:(11)享元模式
本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/7792973.html,记录一下学习过程以备后续查用. 一.引言 今天我们要讲结构型设计模式的第六个模式--享 ...
- centos5,6 系统启动流程
linux内核特点: 支持模块化:模块文件的名字以.ko(kernel object)结尾 支持内核运行时,动态加载和卸载模块文件. linux内核组成部分: 核心文件:/boot/vmlinuz-V ...
- 1、Docker部署及基础理论
1.Docker入门简介 Docker技术类似码头上看到的集装箱,最早集装箱没有出现的时候,码头上有许多搬运的工人在搬运货物,有了集装箱以后,搬运货物变得简单,通过集装箱的搬运模式更加单一.高效,将货 ...
- 【POJ - 2533】Longest Ordered Subsequence (最长上升子序列 简单dp)
Longest Ordered Subsequence 搬中文 Descriptions: 给出一个序列,求出这个序列的最长上升子序列. 序列A的上升子序列B定义如下: B为A的子序列 B为严格递增序 ...
- Linux系统开机显示BusyBox v1.22.1 built-in shell(ash) 解决方法
BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件.BusyBox 包含了一些简单的工具,例如ls.cat和echo等等,还包含了一些更大.更复杂的工具,例grep.find.mou ...