本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:2.3 Nginx服务的启停控制 - Python技术站
2.3 Nginx服务的启停控制
•
Nginx
在Linux平台下,控制Nginx服务的启停有多种方法
2.3.1 Nginx服务的信号控制
在Nginx服务的启停办法中,有一类是通过信号机制来实现的,Nginx服务器的信号控制如下:
Nginx服务在运行时,会保持一个主进程和一个或多个 worker process 工作进程。通过给Nginx服务的主进程发送信号就可以控制服务的启停了。
获取nginx主进程的进程号 PID:
①Nginx服务启动以后,默认在Nginx服务器安装目录下的logs目录中会产生文件名为 nginx.pid 的文件,此文件中保持的就是Nginx服务主进程的PID.
这个文件的存放路径和文件名都可以在Nginx服务器的配置文件中进行配置。
②使用Linux的查看进程工具 ps ps -ef | grep nginx
Nginx服务主进程能够接收的信号如下:
TERM或INT:快速停止Nginx服务
QUIT:平缓停止Nginx服务
HUP:使用新的配置文件启动进程,之后平缓停止原有进程,就是'平滑重启'
USR1:重新打开日志文件,常用于日志切割
USR2:使用新版本的Nginx文件启动服务,之后平缓停止原有Nginx进程,也就是’平滑升级‘
WINCH:平缓停止 worker process,用于 Nginx 服务器平滑升级
向Nginx主进程发送信号的两种方法:1⃣️使用nginx二进制文件 2⃣️使用kill命令发送信号
kill SIGNAL PID
SIGNAL:指定信号,即QUIT、HUP、TERM或INT、USR1、USR2、WINCH中的某一个
PID:指定Nginx服务主进程的PID,也可以使用 nginx.pid 动态获取 PID号
kill SIGNAL 'filepath' filepath为nginx.pid的路径
2.3.2 Nginx服务的启动
二进制文件nginx的相关用法:
-h或-? :用来打印二进制文件 nginx 的用法,就是上面显示的内容
-v :用来显示Nginx服务器的版本号
-V:除了显示版本号,还显示Nginx服务器编译情况
-t:检查Nginx服务器配置文件是否有语法错误,可以与 "-c" 联用,使输出内容更详细
-q与-t 联用:如果配置文件无错误,将不输出上面的内容
-s signal:向Nginx服务的主进程发送信号
-p prefix:用来改变Nginx的安装路径。常用在平滑升级Nginx服务器的场合
-c filename:用来指定启动Nginx服务使用的配置文件
-g directives:用来补充Nginx配置文件,向Nginx服务指定启动时应用于全局的配置
使用 ps -ef | grep nginx 查看Nginx服务的进程状态
2.3.3 Nginx服务的停止
停止Nginx服务的两种方法:
一种是快速停止:快速停止是指立即停止当前Nginx服务正在处理的所有网络请求,马上丢弃连接,停止工作。
一种是平缓停止:平缓停止是指允许Nginx服务将当前正在处理的网络请求处理完成,但不再接收新的请求,之后关闭连接,停止工作。
停止Nginx服务的操作:
发送信号:./sbin/Nginx -g TERM | INT | QUIT -------》TERM 和 INT 信号用于快速停止,QUIT用于平缓停止
或者:
kill TERM | INT | QUIT '/Nginx/logs/nginx.pid'
也可以使用 kill 命令向 Nginx进程发送 -9 或者 SIGNKILL 信号强制关闭 Nginx服务
kill -9 | SIGKILL '/Nginx/logs/nginx.pid' 不建议这样使用
2.3.4 Nginx服务的重启
更改Nginx服务器的配置和加入新模块后,希望当前的Nginx服务应用新的配置或使新模块生效,就需要重启Nginx服务,然后使用新的Nginx配置文件重启服务。
Nginx服务的平滑重启:
平滑重启的过程,Nginx服务进程接收到信号后,首先读取新的Nginx配置文件,如果配置语法正确,则启动新的Nginx服务然后平缓关闭旧的服务进程;
如果新的Nginx配置有问题,将显示错误,仍然使用旧的Nginx进程提供服务。
使用以下命令实现Nginx服务的平滑重启:
./sbin/nginx -g HUP [-c newConfFile]
HUP信号用于发送平滑重启信号
newConfFile 可选项,用于指定新配置文件的路径
或者使用新的配置文件代替了旧的配置文件后,使用如下命令
kill HUP '/Nginx/logs/nginx.pid' ----也可以实现平滑重启
2.3.5 Nginx服务的升级
如果要对当前的Nginx服务器进行版本升级,应用新模块,最简单的办法是停止当前Nginx服务,然后开启新的Nginx服务,但这样就会导致在一段时间内,用户无法访问服务器。为了解决这个问题,Nginx服务器提供平滑升级的功能
平滑升级的过程:Nginx服务接收到 USR2 信号后,首先将旧的 nginx.pid文件(如果在配置文件中更改过这个文件的名字,也是相同的过程)添加后缀 .oldbin,变成 nginx.pid.oldbin 文件;然后执行新版本Nginx服务器的二进制文件启动服务。如果新的服务启动成功,系统中将有新旧两个Nginx服务共同提供Web服务。之后,需要向旧的Nginx服务进程发送 WINCH 信号,使旧的Nginx服务平滑停止,并删除 nginx.pid.oldbin文件。在发送 WINCH 信号之前,可以随时停止新的 Nginx服务。
注意:为了实现Nginx服务器的平滑升级,新的服务器安装路径应该和旧的保持一致。因此在安装新服务器之前先备份旧服务器。由于某些原因无法保证新旧服务器安装路径一致,则可以先使用以下命令将旧服务器的安装路径更改为新服务器的安装路径:
./Nginx/nginx -p newInstallPath
newInstallPath为新服务器的安装路径。之后备份旧服务器安装新服务器即可
做好准备工作后,使用以下命令实现Nginx服务的平滑升级:
./sbin/Nginx -g USR2
其中,USR2信号用于发送平滑升级信号,或者使用:
kill USR2 '/Nginx/logs/nginx.pid'
通过 ps -ef | grep nginx 查看新的Nginx服务启动正常,再使用
./sbin/Nginx -g WINCH --------其中 WINCH 信号用于发送平滑停止旧服务信号,或者 使用:
kill WINCH '/Nginx/logs/nginx.pid'
这样就在不停止提供 Web 服务的前提下完成了 Nginx 服务器的平滑升级
赞 (0)
nginx zookeeper
上一篇
2023年4月11日
nginx reload的原理
下一篇
2023年4月11日