nginx运行和控制

北城以北 提交于 2019-11-27 22:29:47

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

  

    

 

 

  

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!