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

网友投稿 829 2023-03-13

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

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

Nginx的启动

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

假设 nginx 安装在 /usr/local/nginx 目录中,那么启动 nginx 的命令就是:[root@ ~]# /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@tiejiang ~]# kill -QUIT 【Nginx主进程号】或者[root@tiejiang ~]# kill -QUIT `/usr/local/nginx/logs/nginx.pid` 字符是数字键盘 1 字符左边的那个字符,不需要 Shift,直接按 ` 字符即可。  如果在 nginx.conf 配置文件中指定了 pid 文件存放的路径,该文件中存放的就是 nginx 当前的主进程号。默认是放在 nginx 安装目录的 logs 目录下。2、快速停止Nginx[root@tiejiang ~]# kill -TERM 【Nginx主进程号】或者[root@tiejiang ~]# kill -INT 【Nginx主进程号】  3、强制停止所有 nginx 进程 [root@tiejiang ~]# pkill -9 nginx

nginx 的停止方法有很多,一般通过发送系统信号给 nginx 的主进程的方式来停止 nginx。 1、从容停止Nginx[root@ ~]# kill -QUIT 【Nginx主进程号】或者[root@ ~]# kill -QUIT `/usr/local/nginx/logs/nginx.pid` 字符是数字键盘 1 字符左边的那个字符,不需要 Shift,直接按 ` 字符即可。 如果在 nginx.conf 配置文件中指定了 pid 文件存放的路径,该文件中存放的就是 nginx 当前的主进程号。默认是放在 nginx 安装目录的 logs 目录下。2、快速停止Nginx[root@ ~]# kill -TERM 【Nginx主进程号】或者[root@ ~]# kill -INT 【Nginx主进程号】 3、强制停止所有 nginx 进程 [root@ ~]# pkill -9 nginx

Nginx的平滑启动

如果改变了 nginx 的配置文件,想重启 nginx,同样可以发送系统信号给 nginx 主进程的方式来进行。不过,重启之前,要确认 nginx 配置文件的语法是否正确的。否则 nginx 将不会加载新的配置文件。可以通过以下命令来判断配置文件是否正确:

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

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

Nginx 的信号控制

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

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

Nginx 的平滑升级

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

(1) 使用新的可执行程序替换旧的可执行程序,对于编译安装的 nginx,可以将新版本编译安装到旧版本的 nginx 安装路径中。替换之前,最好备份一下旧的可执行文件。 (2) 发送以下指令: [root@tiejiang ~]# kill -USR2 【旧颁布的Nginx主进程号】 (3) 旧版本 nginx 的主进程将重命名它的 pid 文件为 .oldbin(例如:/usr/local/nginx/logs/nginx.pid.oldbin),然后执行新版本的 nginx 可执行程序,依次启动新的主进程和新的工作进程。 (4) 此时,新、旧版本的 nginx 实例会同时运行,共同处理输入的请求。要逐步停止旧版本的 nginx 实例,你必须发送 WINCH 信号给旧的主进程,然后,它的工作进程就将开始从容关闭:[root@tiejiang ~]# kill -WINCH 【旧版本的Nginx主进程号】 (5) 一段时间后,旧的工作进程(worker process)处理了所有已连接的请求后退出,仅由新的工作进程来处理输入的请求了。 (6) 这时候,我们可以决定是使用新版本,还是恢复到旧版本: [root@tiejiang ~]# kill -HUP 【旧的主进程号】:nginx 将在不重载配置文件的情况下启动它的工作进程 [root@tiejiang ~]# kill -QUIT 【新的主进程号】:从容关闭其工作进程(worker process) [root@tiejiang ~]# kill -TERM 【新的主进程号】:强制退出 [root@tiejiang ~]# kill 【新的主进程号或旧的主进程号】:如果因为某些原因新的工作进程不能退出,则向其发送 kill 信号 新的主进程退出后,旧的主进程会移除 .oldbin 后缀,恢复为它 的 .pid 文件,这样,一切就恢复到升级之前了。如果尝试升级成功,而你也希望保留新的服务器时,可发送 QUIT 信号给旧的主进程,使其退出而只留下新的服务器运行。

(1) 使用新的可执行程序替换旧的可执行程序,对于编译安装的 nginx,可以将新版本编译安装到旧版本的 nginx 安装路径中。替换之前,最好备份一下旧的可执行文件。 (2) 发送以下指令: [root@ ~]# kill -USR2 【旧颁布的Nginx主进程号】 (3) 旧版本 nginx 的主进程将重命名它的 pid 文件为 .oldbin(例如:/usr/local/nginx/logs/nginx.pid.oldbin),然后执行新版本的 nginx 可执行程序,依次启动新的主进程和新的工作进程。 (4) 此时,新、旧版本的 nginx 实例会同时运行,共同处理输入的请求。要逐步停止旧版本的 nginx 实例,你必须发送 WINCH 信号给旧的主进程,然后,它的工作进程就将开始从容关闭:[root@ ~]# kill -WINCH 【旧版本的Nginx主进程号】 (5) 一段时间后,旧的工作进程(worker process)处理了所有已连接的请求后退出,仅由新的工作进程来处理输入的请求了。 (6) 这时候,我们可以决定是使用新版本,还是恢复到旧版本: [root@ ~]# kill -HUP 【旧的主进程号】:nginx 将在不重载配置文件的情况下启动它的工作进程 [root@ ~]# kill -QUIT 【新的主进程号】:从容关闭其工作进程(worker process) [root@ ~]# kill -TERM 【新的主进程号】:强制退出 [root@ ~]# kill 【新的主进程号或旧的主进程号】:如果因为某些原因新的工作进程不能退出,则向其发送 kill 信号 新的主进程退出后,旧的主进程会移除 .oldbin 后缀,恢复为它 的 .pid 文件,这样,一切就恢复到升级之前了。如果尝试升级成功,而你也希望保留新的服务器时,可发送 QUIT 信号给旧的主进程,使其退出而只留下新的服务器运行。

上一篇:LVS集群之十种调度算法及负载均衡——理论
下一篇:做智能化运维公司有哪些(智能运维解决方案)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~