一、Nginx的信号控制
Nginx服务在运行时,会保持一个主进程和一个或多个worker process工作进程
通过给Nginx服务的主进程发送信号就可以控制服务的启停了
如何给主进程发送信号呢?首先要知道主进程的进程号PID
二、获取PID的两种途径
1、Nginx启动后,默认在Nginx服务器安装目录下logs 会产生文件名nginx.pid
2、通过ps 命令查看进程
系统中包含一个Nginx服务的主进程master process和1个工作进程worker process,其中主进程对应的PID为第二列中的15847,这和nginx.pid文件中的一致。
三、Nginx服务可接收的信号
向Nginx服务主进程发送信号也有两种方法:
1、使用nginx二进制文件
kill SIGNAL PID
SIGNAL,用于指定信号,PID,指定Nginx服务主进程的PID,也可以使用nginx.pid动态获取PID号
2、是使用kill命令发送信号
kill SIGNAL `filepath` filepath为nginx.pid的路径
四、Nginx服务启动
Linux平台下,启动Nginx服务器直接运行安装目录下sbin目录中的二进制文件即可
首先定位到Nginx安装目录下,执行
# ./sbin/nginx -h
nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives] -?,-h : this help 显示该帮助信息 -v :show version and exit 打印版本号并退出 -V:打印版本号和配置并退出 -t:测试配置正确性并退出 -q:测试配置时只显示错误 -s:向主进程发送信号 -p:指定nginx服务器路径前缀 -c:指定nginx配置文件路径 -g :指定nginx 附加配置文件路径
五、Nginx服务的停止
停止Nginx有2种方法:
1、快速停止:指立即停止当前Nginx服务正在处理的所有网络请求,马上丢弃连接,停止工作
2、平缓停止:指允许Nginx服务将当前正在处理的网络请求处理完成,但不再接收新的请求,之后关闭连接,停止工作
停止Nginx服务的操作比较多,可以发送信号:
# ./sbin/nginx -g TERM | INT | QUIT
TERM和INT信号用于快速停止,QUIT用于平缓停止
或者:
# kill TERM | INT | QUIT `/Nginx/logs/nginx.pid`
也可以使用kill命令向Nginx进程发送-9或者SIGKILL信号强制关闭Nginx服务 (通常不建议这样做)
# kill -9 | SIGKILL `/Nginx/logs/nginx.pid`
六、Nginx服务的重启
更改Nginx服务器的配置和加入新模块后,如果希望当前的Nginx服务应用新的配置或使新模块生效,就需要重启Nginx服务
或者,我们可以先关闭Nginx服务,然后使用新的Nginx配置文件重启服务
七、Nginx服务的平滑重启
平滑重启是这样一个过程,Nginx服务进程接收到信号后,首先读取新的Nginx配置文件,如果配置语法正确,则启动新的Nginx服务,然后平缓关闭旧的服务进程;
如果新的Nginx配置有问题,将显示错误,仍然使用旧的Nginx进程提供服务
以下命令实现Nginx服务的平滑重启:
# ./sbin/nginx -g HUP [-c newConfigFile]
HUP信号用于发送平滑重启信号
newConfFile,可选项,用于指定新配置文件的路径
或者
使用新的配置文件代替了旧的配置文件后,也可以实现平滑重启
# kill HUP `/nginx/logs/nginx.pid`