nginx运行和控制
1、Nginx命令行参数
Nginxj仅有几个命令行参数,完全通过配置文件来配置
-c </path/to/config> :为Nginx指定一个配置文件,来代替缺省的。
-t :不运行,仅仅测试配置文件。检查配置文件的语法的正确性。
-v:显示nginx的版本。
-V:显示nginx的版本,编译器版本和配置参数。
2、Nginx控制信号
Nginx可以使用信号系统来控制主进程。默认,nginx将主进程的pid写入到/usr/local/nginx/nginx.pid文件中。通过传递参数给./configure或使用pid指令,来改变该文件的位置。
主进程处理的信号:
TERM,INT 快速关闭
QUIT 从容关闭
KILL 杀死影响的进程
HUP 重新配置,用新的配置开始新的工作进程从容关闭旧的工作进程
USR1 重新打开日志文件
USR2 平滑升级可执行程序
WINCH 配合USR2使用,关闭主进程
信号使用方式
kill -信号 `cat /usr/local/nginx/nginx.pid`
详解
1、TERM,INT:nginx的进程马上被关闭,不能完整处理正在使用的nginx的用户的请求,等同于/usr/local/nginx -s stop
eg:kill -TERM(INT) 进程号
2、QUIT:nginx主进程号从容的关闭nginx进程,在处理完所有正在使用nginx用户请求后再关闭nginx进程,等同于/usr/local/nginx -s quit
eg:kill -QUIT 进程号
3、HUP :nginx进程不关闭,但是重新加载配置文件。等同于/usr/local/nginx -s reload
eg:kill -HUP 进程号
4、USR1:不关闭nginx进程就可以重读日至,用于nginx的日志定时备份,按月/日等时间间隔分割。
eg:kill -USR1 进程号
5、USR2:nginx的版本需要升级时候,不需要停止nginx,就能对nginx升级。
eg:kill -USR2 进程号
6、WINCH:配合USR2对nginx升级,从容的关闭nginx就版本的进程
eg:kill -WINCH 进程号
3、启动、停止、重启
启动:
/usr/local/nginx/nginx
停止:
从容停止,等所有请求结束后关闭服务
kill -QUIT `cat /usr/local/nginx/nginx.pid`
停止,立即关闭nginx进程
kill -TERM(INT)`cat /usr/local/nginx/nginx.pid`
强制停止
kill -9 `cat /usr/local/nginx/nginx.pid`
重启:
先关闭进程,修改配置后,重启进程
kill -QUIT `cat /usr/local/nginx/nginx.conf`
/usr/local/nginx/nginx
重新加载配置文件,不重启,不会停止处理请求
/usr/local/nginx/nginx -s reload
#检查配置文件 nginx -t -c /usr/local/nginx/conf/nginx.conf
或者 使用信号
kill -HUP `cat /usr/local/nginx/nginx.pid`
4、平滑升级
可以在不终端服务的情况下,新的请求也不会丢失,使用新的nginx可执行程序替换旧的。
a、安装新版本的可执行文件nginx,备份旧的为nginx.old,使用新的nginx。
b、发送USR2信号给主进程,主进程会将nginx.pid更名为nginx.pig.oldbin,然后执行新的可执行程序,依次启动新的主进程和新的工作进程。
kill -USR2 `cat /usr/local/nginx/nginx.pid`
c、此时新旧进程同时存在,使用WINCH信号给旧的主进程,从容关闭。此时服务器尚未关闭监听的套接字!
kill -WINCH `cat /usr/local/nginx/nginx.pid.oldbin`
d、退出旧的主进程,只留下新的服务器
kill -QUIT `cat /usr/local/nginx/nginx.pid.oldbin`
5、回滚
平滑升级过程中的回滚,即在发送USR2信号后,继续使用旧的主进程。这时候,旧的主进程的套接字没有关闭,可以进行以下步骤:
a、发送HUP信号给旧的主进程
kill -HUP `cat /usr/local/nginx/nginx.pid.oldbin`
b、发送QUIT信号给新的主进程
kill -QUIT 新进程号
c、发送TERM信号给新的主进程
kill -TERM 新进程号
d、如果无法退出,直接kill