nginx命令行参数nginx只有几个命令行参数,完全由配置文件组成
- c/path/to/config http://www.Sina.com /
为 Nginx 指定一个配置文件,来代替缺省的。 不运行,仅测试配置文件。 nginx将检查配置文件语法是否正确,并尝试打开配置文件中引用的文件。
-t显示nginx的版本。
显示3358www.Sina.com/nginx的版本、编译器的版本和配置参数。
nginx控制信号可以使用信号系统控制主过程。 缺省情况下,nginx将主进程的pid写入/usr/local/nginx/nginx.pid文件中。 将参数传递给./configure或使用-v命令更改文件的位置。
主进程可以处理以下信号:
TERM,INT快速关闭QUIT可以冷静地关闭HUP的重装配置
用新的配置开始新的工作流程
关闭旧的工作进程USR1并重新打开日志文件USR2,以便顺利升级可执行文件。 WINCH不需要自己操作工作流程,但支持一些信号。
TERM,INT快速关闭QUIT关闭USR1并返回日志文件-V
pid
如何给主进程发送信号呢?首先要知道主进程的进程号PID?
获取PID有两个途径,
一个是,在Nginx启动后,默认在Nginx服务器安装目录下面的logs/nginx.pid文件,里面存储主进程的PID 。
#cat /usr/local/nginx/logs/nginx.pid
二个是,在Linux下面使用ps命令查看主进程的PID.
首先,Nginx服务主节点发送信号有两种方法。 第一个是使用Nginx二进制文件
nginx -s参数后面有几个选项,如stop、quit、reopen和reload。
另一种方法是使用kill命令发送信号
nginx启动、停止和重新启动命令列出所有信号名称命令:
sudo/usr/local/nginx/nginx () nginx二进制文件的绝对路径可以根据自己的安装路径来确定) ) )。
kill-l
kill -QUIT nginx的主进程号实际上是信号SIGQUIT 3
nginx启动
kill -TERM nginx的主进程号实际上是信号SIGTERM 15
nginx从容停止命令,等所有请求结束后关闭服务
kill -9 nginx的主流程号实际上是信号SIGKILL 9
如果麻烦的话,不用看进程编号,也可以用命令直接操作
其中/usr/local/nginx/nginx.pid是在nginx.conf中为pid命令设置的参数,用于存储nginx主进程号文件
kill -信号类型(帮助) cat /usr/local/nginx/nginx.pid `
例如
kill-quit ` cat/usr/local/nginx/nginx.PID ` http://www.Sina.com /
nginx重启可以分为几种类型
1 .类型简单,首先关闭流程,修改你的部署,然后重新启动流程。
kill-quit ` cat/usr/local/nginx/nginx.PID `或直接与TERM和INT
sudo /usr/local/nginx/nginx
2 .重新加载配置文件,不重新启动进程,不停止处理请求
顺利更新nginx二进制文件,不停止处理请求
nginx 快速停止命令,立刻关闭nginx进程和kwdmn是用于平滑更改nginx配置的选项。 请注意,在重新加载之前必须测试配置文件。
# nginx-t-c/etc/nginx/nginx.conf 2006/09/161:07336010 [ info ] 15686 # 0: theconfigurationfile/et
c/nginx/nginx.conf syntax is ok2006/09/16 13:07:10 [info] 15686#0: the configuration file /etc/nginx/nginx.conf was tested successfully如果-q和-t联用,配置文件无错误,将不输出上面的内容。-q suppress non-error messages during configuration testing 测试配置时只显示错误所以在测试的时候可以 -q -t -c 三个参数一起使用#ps aux | egrep '(PID|nginx)'USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 2213 0.0 0.0 6784 2036 ? Ss 03:01 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf# kill -HUP 2213当 nginx 接收到 HUP 信号,它会尝试先解析配置文件(如果指定配置文件,就使用指定的,否则使用默认的),成功的话,就应用新的配置文件(例如:重新打开日志文件或监听的套接 字)。之后,nginx 运行新的工作进程并从容关闭旧的工作进程。通知工作进程关闭监听套接字但是继续为当前连接的客户提供服务。所有客户端的服务完成后,旧的工作进程被关闭。 如果新的配置文件应用失败,nginx 将继续使用旧的配置进行工作。
平滑升级
为了实现Nginx服务器的平滑升级,新的服务器安装路径应该和旧的保持一致,建议在安装新服务器之前先备份旧服务器,
可以在不中断服务的情况下 - 新的请求也不会丢失,使用新的 nginx 可执行程序替换旧的(当升级新版本或添加/删除服务器模块时)。首先,使用新的可执行程序替换旧的(最好做好备份),,依次启动新的主进程和新的工作进程:
在upgrade过程中,还涉及到3个信号(USR2、WINCH和QUIT)。
首先发送USR2信号给原master,原master进程会额外启动一个master进程和若干worker进程,新旧worker进程同时提供对外服务。
第二步发送WINCH信号,原worker进程停止服务并退出。
最后发送QUIT信号给原master使之退出,只保留新的master和worker。1.备份旧程序,下载新程序
备份原有的/usr/local/nginx下的所有文件,打包压缩到本地目录下
#tar -czvf old_nginx.tar.gz /usr/local/nginx/
首先下载新的Nginx从http://nginx.org/网站,下载解压
还是一套流程,configure,make,make install,其中
#./configure --prefix=/usr/local/nginx ##新的服务器安装路径应该和旧的保持一致
# make && make install
2.首先发USR2给旧版本的Nginx主进程号
#kill -USR2 `cat /usr/local/nginx/logs/nginx.pid` 旧版本的Nginx主进程号
这个时候/usr/local/nginx/logs/nginx.pid无任何变化。
3.然后执行新的可执行程序
#/usr/local/nginx/sbin/nginx
主进程将重命名它的 .pid 文件为.oldbin (比如:/usr/local/nginx/logs/nginx.pid.oldbin)
在这时,两个 nginx 实例会同时运行,一起处理输入的请求。要逐步停止旧的实例,你必须发送 WINCH 信号给旧的主进程,然后,它的工作进程就将开始从容关闭:
PID PPID USER %CPU VSZ WCHAN COMMAND33126 1 root 0.0 1164 pause nginx: master process /usr/local/nginx/sbin/nginx33135 33126 nobody 0.0 1380 kqread nginx: worker process is shutting down (nginx)36264 33126 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx36265 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)36266 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
一段时间后,旧的工作进程处理了所有已连接的请求后退出,就仅由新的工作进程来处理输入的请求了:
PID PPID USER %CPU VSZ WCHAN COMMAND33126 1 root 0.0 1164 pause nginx: master process /usr/local/nginx/sbin/nginx36264 33126 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx36265 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)36266 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
恢复到以前
旧的服务器还尚未关闭它监听的套接字,所以可以恢复旧的服务器:
发送 QUIT 信号给新的主进程,要求其从容关闭其工作进程发送 TERM 信号给新的主进程,迫使其退出如果因为某些原因新的工作进程不能退出,向其发送 KILL 信号新的主进程退出后,旧的主进程会由移除 .oldbin 前缀,恢复为它的 .pid 文件,一切就都恢复到升级之前了。
在发送WINCH信号之前,可以随时停止新的Nginx服务
升级成功
如果升级成功,那必然要关闭旧的服务器进程,发送 QUIT 信号给旧的主进程使其退出而只留下新的服务器运行: