因为我的测试环境在Windows环境,所以很多命令都无法测试。
这里直接复制书中的Linux命令。
Nginx的信号支持
Nginx支持以下几种信号:
TREM、INT | 快速关闭 |
QUIT | 从容关闭 |
HUP | 平滑启动、重新加载配置文件 |
USR1 | 重新打开日志文件,在切割日志时用途较大 |
USR2 | 平滑升级可执行程序 |
WINCH | 从容关闭工作进程 |
Nginx启动
假设Nginx安装在/usr/local/nginx/ 目录中,那么启动Nginx的命令就是:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
参数 -c 指定了配置文件的路径;
如果不加 -c 参数,Nginx默认加载其安装路径目录conf中的nginx.conf文件。
Nginx停止
查找Nginx的主进程:
ps -ef | grep nginx
显示所有Nginx的进程,其中备注:master process , 表示它为主进程;其他是子进程。
如果在nginx.conf配置文件中指定了nginx.pid文件存放的路径,该文件中存放的就是Nginx当前的主进程号。
如果没有指定,nginx.pid文件默认存放在Nginx安装路径的logs目录下。
例如,windows环境下:
so,可以直接通过以下命令完成平滑重启,省下寻找Nginx主进程号的步骤;
kill - 信号类型 `/usr/local/webserver/nginx/logs/nginx.pid`
①. 从容停止Nginx
kill - QUIT 主进程号
或
kill - QUIT `/usr/local/webserver/nginx/logs/nginx.pid`
②. 快速停止Nginx
kill - TERM Nginx主进程号
kill - TERM `/usr/local/webserver/nginx/logs/nginx.pid`
或
kill - INT Nginx主进程号
kill - INT `/usr/local/webserver/nginx/logs/nginx.pid`
③. 强制停止
pkill -9 nginx
Nginx平滑重启
如果改变了Nginx的配置文件nginx.conf,想要重启Nginx,同样可以通过发送系统信号给Nginx主进程的方式来进行。
不过,重启之前,要确认Nginx配置文件nginx.conf的语法是否正确;否则Nginx不会加载新的配置文件。
通过以下命令:
./nginx.exe -t -c ./conf/nginx.conf
配置文件语法正确会输出以下两行:
这时候就可以平滑重启Nginx了:
kill -HUP Nginx进程
kill -HUP `/usr/local/webserver/nginx/logs/nginx.pid`
当Nginx接收到HUP信号时,它会先尝试解析配置文件(如果没有指定,就使用默认的);
配置文件解析成功,就应用新的配置文件。
之后,Nginx运行新的工作进程并从容关闭旧的工作进程,通知工作进程关闭监听套接字,但是继续为当前连接的客户提供服务。
所有客户端的服务完成之后,旧的工作进程被关闭。如果新的配置文件应用失败,Nginx将继续使用旧的配置进行工作。
Nginx平滑升级
当需要将正在运行中的Nginx升级、添加、删除服务器模块时,可以在不中断服务的情况下,使用新版本、重编译的Nginx可执行程序替换旧版本的可执行程序。
书中具体流程不太详细,可以参考这篇:https://www.cnblogs.com/liuqiang0/p/8528009.html
参考来源:《实战Nginx:取代Apache的高性能Web服务器》