一、Nginx 的启动
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
参数 "-c" 指定了配置文件的路径,如果不加 "-c" 参数,Nginx 会默认加载其安装目录的 conf 子目录中的 nginx.conf 文件,在本例中即:/usr/local/nginx/conf/nginx.conf。
二、Nginx 的停止
可以通过 ps 命令来查找 Nginx 的主进程号:
ps -ef|grep nginx
从图中可以看到,1 个 Nginx 进程的备注信息为 “master process”,表示它为主进程,另外的 2 个进程的备注信息为 “worker process”,表示它们为子进程。3781为主进程号。
如果在 nginx.conf 配置文件中指定了 pid 文件存放的路径 (例如:/usr/local/webserver/nginx/nginx.pid;),该文件中存放的就是 Nginx 当前的进程号。如果没有指定 pid 文件存放的路径,nginx.pid 文件默认存放在 Nginx 安装目录的 logs 目录下。所以,我们可以直接通过以下命令来完成命令来完成停止,省下寻找 Nginx 主进程号的步骤:
kill -信号类型 `cat /usr/local/webserver/nginx/nginx.pid`
(1) 从容停止 Nginx
kill -QUIT Nginx主进程号
或
kill -QUIT `cat /usr/local/webserver/nginx/nginx.pid`
(2) 快速停止 Nginx
kill -TERM Nginx主进程号kill -TERM `cat /usr/local/webserver/nginx/nginx.pid`
或
kill -INT Nginx主进程号kill -INT `cat /usr/local/webserver/nginx/nginx.pid`
(3) 强制停止所有 Nginx 进程
pkill -9 nginx
三、Nginx 的平滑重启
如果改变了 Nginx 的配置文件 (nginx.conf),想要重启 Nginx ,同样可以通过发送系统信号给 Nginx 主进程的方式来进行。不过,重启之前,要确认 Nginx 配置文件 (nginx.conf) 的语法是正确的,否则 Nginx 将不会加载新的配置文件。通过以下命令可以判断 Nginx 配置文件是否正确:
/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
如果配置文件不正确,屏幕将会提示配置文件的第几行出错;
如果配置文件正确,屏幕将提示以下两行信息:
这时候,就可以平滑重启 Nginx 了。
kill -HUP Nginx主进程号
或
kill -HUP `cat /usr/local/webserver/nginx/nginx.pid`
当 Nginx 接收到 HUP 信号时,它会尝试先解析配置文件 (如果指定配置文件,就使用指定的,否则使用默认的),如果成功,就应用新的配置文件 ( 例如,重新打开日志文件或监听的套接字 )。之后, Nginx 运行新的工作进程并从容关闭旧的工作进程。通知工作进程关闭监听套接字,但是继续为当前连接的客户提供服务。所有客户端的服务完成后,旧的工作进程被关闭。如果新的配置文件应用失败,Nginx 将继续使用旧的配置进行工作。
四、Nginx 的信号控制
在上一节中,我们使用了信号来控制 Nginx 停止、平滑重启,Nginx 支持以下几种信号:
- TERM,INT 快速关闭;
- QUIT 从容关闭;
- HUP 平滑重启,重新加载配置文件;
- USR1 重新打开日志文件,在切割日志时用途较大;
- USR2 平滑升级可执行程序;
- WINCH 从容关闭工作进程。