`
zachary.guo
  • 浏览: 487173 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Nginx 的启动、停止、平滑重启、信号控制和平滑升级

阅读更多
    ● Nginx 的启动
        假设 nginx 安装在 /usr/local/nginx 目录中,那么启动 nginx 的命令就是:
[root@localhost ~]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
        参数 "-c" 指定了配置文件的路径,如果不加 "-c" 参数,Nginx 会默认加载其安装目录的 conf 子目录中的 nginx.conf 文件。


    ● Nginx 的停止
        nginx 的停止方法有很多,一般通过发送系统信号给 nginx 的主进程的方式来停止 nginx。

                (1) 从容停止 nginx
[root@localhost ~]# kill -QUIT 【Nginx主进程号】
        或
# ` 字符是数字键盘 1 字符左边的那个字符,不需要 Shift,直接按 ` 字符即可。
# 如果在 nginx.conf 配置文件中指定了 pid 文件存放的路径,该文件中存放的就是 nginx 当前的主进程号。默认是放在 nginx 安装目录的 logs 目录下。
[root@localhost ~]# kill -QUIT `/usr/local/nginx/logs/nginx.pid`

                (2) 快速停止 nginx
[root@localhost ~]# kill -TERM 【Nginx主进程号】
        或
[root@localhost ~]# kill -INT 【Nginx主进程号】

                (3) 强制停止所有 nginx 进程
[root@localhost ~]# pkill -9 nginx


    ● Nginx 的平滑重启
        如果改变了 nginx 的配置文件,想重启 nginx,同样可以发送系统信号给 nginx 主进程的方式来进行。不过,重启之前,要确认 nginx 配置文件的语法是否正确的。否则 nginx 将不会加载新的配置文件。可以通过以下命令来判断配置文件是否正确:
# -t 参数将检查配置文件的语法是否正确,默认会检查 /usr/local/nginx/conf/nginx.conf 文件。
[root@localhost ~]# /usr/local/nginx/sbin/nginx -t
# 如果要对指定的配置文件进行语法检查,可以继续添加 -c 参数
[root@localhost ~]# /usr/local/nginx/sbin/nginx -t -c /home/a/b/c/my-nginx.conf
        这个时候,就可以平滑重启 nginx 了。
[root@localhost ~]# kill -HUP 【Nginx主进程号】
        当 nginx 接收到 HUP 信号时,它会尝试先解析配置文件,如果成功,就应用新的配置文件(例如,重新打开日志文件或监听的套接字)。之后,nginx 运行新的工作进程并从容关闭旧的工作进程。通知工作进程关闭监听套接字,但是继续为当前连接的客户提供服务。所有的客户端的服务完成后,旧的工作进程被关闭。如果新的配置文件应用失败,nginx 将继续使用旧的配置文件进行工作。


    ● Nginx 的信号控制
  •     TERM, INT 快速关闭
  •     QUIT 从容关闭
  •     HUP 平滑重启,重新加载配置文件
  •     USR1 重新打开日志文件,在切割日志时用途较大
  •     USR2 平滑升级可执行程序
  •     WINCH 从容关闭工作进程

    ● Nginx 的平滑升级
        当需要将正在运行中的 nginx 升级、添加/删除服务器模块时,可以在不中断服务的情况下,使用新版本、重编译的 nginx 可执行程序替换旧版本的课执行程序。步骤如下:

        (1) 使用新的可执行程序替换旧的可执行程序,对于编译安装的 nginx,可以将新版本编译安装到旧版本的 nginx 安装路径中。替换之前,最好备份一下旧的可执行文件。

        (2) 发送以下指令:
[root@localhost ~]# kill -USR2 【旧颁布的Nginx主进程号】

        (3) 旧版本 nginx 的主进程将重命名它的 pid 文件为 .oldbin(例如:/usr/local/nginx/logs/nginx.pid.oldbin),然后执行新版本的 nginx 可执行程序,依次启动新的主进程和新的工作进程。

        (4) 此时,新、旧版本的 nginx 实例会同时运行,共同处理输入的请求。要逐步停止旧版本的 nginx 实例,你必须发送 WINCH 信号给旧的主进程,然后,它的工作进程就将开始从容关闭:
kill -WINCH 【旧版本的Nginx主进程号】

        (5) 一段时间后,旧的工作进程(worker process)处理了所有已连接的请求后退出,仅由新的工作进程来处理输入的请求了。

        (6) 这时候,我们可以决定是使用新版本,还是恢复到旧版本:
              kill -HUP 【旧的主进程号】:nginx 将在不重载配置文件的情况下启动它的工作进程
              kill -QUIT 【新的主进程号】:从容关闭其工作进程(worker process)
              kill -TERM 【新的主进程号】:强制退出
              kill 【新的主进程号或旧的主进程号】:如果因为某些原因新的工作进程不能退出,则向其发送 kill 信号

        新的主进程退出后,旧的主进程会移除 .oldbin 后缀,恢复为它 的 .pid 文件,这样,一切就恢复到升级之前了。如果尝试升级成功,而你也希望保留新的服务器时,可发送 QUIT 信号给旧的主进程,使其退出而只留下新的服务器运行。
分享到:
评论
1 楼 bo_hai 2014-10-31  
总结的真好!

相关推荐

    windows下Nginx启动、关闭、重启bat工具

    标题中的“Windows下Nginx启动、关闭、重启bat工具”指的是在Windows操作系统中,使用批处理脚本(.bat文件)来管理Nginx服务器的启动、停止和重启操作。这种工具通常由IT专业人士创建,以简化Nginx服务的日常管理。...

    windows 注册Nginx为服务,自动重启

    最后,确保Nginx服务配置正确无误后,可以使用`nginx.exe -s reload`命令重新加载配置,或通过服务控制来启动或停止服务。 总结,通过以上步骤,我们可以成功地在Windows上安装Nginx,将其注册为服务,并设置自动...

    nginx安装、启动停止、信号、开机自启动配置

    本篇将详细介绍Nginx的安装过程、启动与停止操作、信号管理以及如何设置开机自启动。** **一、Nginx的安装** 1. **依赖检查**:在安装Nginx前,确保系统已经安装了必要的依赖,如GCC编译器、pcre库、zlib库和...

    Centos7环境下Nginx版本升级方式及步骤

    6. **平滑升级**:向主进程发送USR2信号,启动新版本的master,接着发送HUP信号,让旧的worker在处理完现有连接后停止。 ### 注意事项 - 在升级前,务必备份现有的配置文件和日志,以防意外情况发生。 - 升级过程...

    Linux中安装Nginx以及启动、关闭和重启命令.pdf

    平滑重启Nginx时,不需要先停止再启动,而是通过发送HUP信号,比如`kill -HUP 主进程号`或`/usr/nginx/sbin/nginx -s reload`,这样Nginx会在不影响现有连接的情况下加载新的配置文件。 配置文件的检查也很重要,...

    nginx 平滑重启与升级的实现方法

    在这个过程中,平滑重启和升级Nginx服务显得尤为重要,以确保在更新的过程中不会中断对外提供服务。 在Nginx的配置文件nginx.conf中,我们可能会做出修改,比如优化性能、增加新的模块、更改代理设置等。在这些配置...

    nginx 平滑重启的实现方法

    在Linux环境下,Nginx平滑重启通常通过发送特定的信号给Nginx主进程来实现。主要有以下两个步骤: 1. **发送USR2信号**:使用`kill -USR2`命令发送USR2信号给旧的主进程,这会导致旧主进程创建一个新的主进程和工作...

    nginx一键启动,停止.重启脚本

    如果回答“yes”,脚本会再次检查Nginx是否在运行,如果运行则调用`nginx -s reload`命令实现平滑重启,显示“重新启动成功....”。如果Nginx未启动,脚本将提示“nginx没有启动无法重新启动...”。如果用户回答“no...

    nginx开机启动脚本

    此脚本用于控制 Nginx 的启动、停止、重启以及状态检查等功能。 #### 脚本结构解析 ### 标题与描述 - **标题**:“nginx开机启动脚本” - **描述**:“nginx开机启动脚本” 这两个部分明确指出了脚本的主要目的...

    Nginx 启动脚本/重启脚本代码

    在CentOS系统中,为了方便管理和控制Nginx服务,通常会创建启动和重启脚本。下面我们将深入探讨如何创建和理解这些脚本以及它们在系统中的作用。 首先,我们来看启动和重启脚本的基本结构。在给定的脚本中,脚本以...

    实战Nginx:取代Apache的高性能Web服务器 第一章

    #### 2.4 Nginx的启动、停止、平滑重启 - **启动**:`nginx`命令启动Nginx。 - **停止**:`nginx -s stop`命令停止Nginx。 - **平滑重启**:`nginx -s reload`命令进行平滑重启,在不中断当前连接的情况下重新加载...

    一句简单命令重启nginx

    2. 要查找并杀死Nginx的主进程,可以先运行`ps -aux | grep nginx`来显示所有与Nginx相关的进程,然后找到主进程ID(通常是PID),使用`kill -HUP 主进程ID`发送`HUP`信号(相当于`-s reload`)来平滑重启。...

    详解linux中nginx启动 重启 关闭命令

    本文将详细介绍如何在Linux系统中启动、重启和关闭Nginx服务,以及进行平滑重启和配置文件的检查。 **启动Nginx** 启动Nginx服务器通常使用以下命令,其中`-c`参数指定Nginx配置文件的路径: ```bash nginx -c /...

    平滑重启使PHP文件有效测试共4页.pdf.zip

    在IT行业中,平滑重启(Graceful Restart)是一种常见的服务器管理技术,特别是在处理高可用性和负载均衡的场景下。平滑重启的主要目的是在不影响服务连续性的情况下更新或维护服务器进程,确保应用程序能够继续为...

    实战Nginx.取代Apache的高性能Web服务器

    2.4 Nginx的启动、停止、平滑重启 2.5 Nginx的平滑重启 2.6 Nginx的信号控制 2.7 Nginx的平滑升级 第2部分 进 阶 篇 第3章 Nginx的基本配置与优化 3.1 Nginx的完整配置示例 3.2 Nginx的虚拟主机配置 3.3 ...

    linux启动和重启nginx方法

    `-s reload`命令会发送信号给Nginx进程,使其重新读取配置文件,完成平滑重启。 除了上述方法,还可以通过系统服务管理工具(如Systemd、init.d等)来启动和重启Nginx。例如,如果你的系统使用Systemd,可以使用...

    nginx 笔记和资料

    Nginx支持多种信号来控制其工作进程,如重新加载配置、平滑重启等: - `HUP` (hangup):重新加载配置文件,不中断现有连接。 - `USR1`:重新打开日志文件,不影响正在处理的请求。 - `USR2`:平滑升级到新的二进制...

Global site tag (gtag.js) - Google Analytics