1. Nginx命令行支持的操作选项:
root > ./nginx -h
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]
Options:
-?,-h : this help
-v : show version and exit
-V : show version and configure options then exit
-t : test configuration and exit
-T : test configuration, dump it and exit
-q : suppress non-error messages during configuration testing # 在配置测试期间抑制非错误信息
-s signal : send signal to a master process: stop, quit, reopen, reload # 可以在Nginx运行时向master进程发送信号
-p prefix : set prefix path (default: /home/nginx//)
-c filename : set configuration file (default: conf/nginx.conf) # 指定启动Nginx时使用哪个配置文件,默认为conf/nginx.conf
-g directives : set global directives out of configuration file # 设置配置文件之外的全局指令(可以在nginx.conf配置文件的基础上修改某些配置选项)
关于 ./nginx -s :
./nginx -s stop # 立刻停止服务
./nginx -s quit # 优雅的停止服务
./nginx -s reopen # 重新开始记录日志文件
./nginx -s reload # 重载配置文件
2. Nginx命令行演示:
(1)重载:
在修改 conf/nginx.conf 配置文件中的某些配置项后,可以在不停止对用户的服务的情况下重载配置文件。
./nginx -s reload
(2)热部署:
什么是热部署?
热部署是指在不停止服务的情况下,对Nginx版本进行升级。
即用新版本的 nginx 替换正在运行的 旧版本的nginx。
只需要替换编译出来的 nginx 二进制可执行文件,其余文件都不需要更换。
关键点在于向旧的master进程发送两个信号:
kill -USR2
和 kill -WINCH
.
操作实例:
cp nginx nginx.old # 第一步,备份旧有的nginx文件
cp /new/nginx nginx # 第二步,用新的nginx文件替换旧的nginx文件
# 第三步,生成新的master进程,并生成新的worker进程
ps -ef | grep nginx # 先找到旧的nginx master进程id
kill -USR2 13195 # 向旧的nginx master进程发送 USR2 信号
ps -ef | grep nginx # 检查是否已经替换成功
# 此时新的master进程会替换旧的master进程,并生成新的worker进程,并将用户服务逐步转移到新的worker进程上去
# 第四步,优雅的关闭旧的worker进程
kill -WINCH 13195 # 向旧的master进程发送WINCH信号,优雅的关闭旧的worker进程
# 注意旧的master进程是不会自动退出的,以便当新版本出现问题时做 版本回退 使用,这种情况下可以使用旧的master进程重新拉起旧的worker进程
(3)日志切割:
当log过大时,需要对日志进行切割。
mv mynginx_access.log bak.log # 对旧的log进行备份
./nginx -s reopen # 这时Nginx会重新生成一个 mynginx_access.log,这样就完成了日志切割