Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nginx命令 #2

Open
dengchengchao opened this issue Dec 14, 2019 · 0 comments
Open

Nginx命令 #2

dengchengchao opened this issue Dec 14, 2019 · 0 comments

Comments

@dengchengchao
Copy link
Owner

Nginx的目录

Linux版本的Nginx中。

主要包含以下4个目录:

  • conf : nginx的配置文件,其中nginx.confnginx服务器的主要配置文件、
  • html : 存在Nginx服务器在运行过程中调用的一些html网页文件。比如500 error,以及默认首页等
  • logs: nginx的日志目录
  • sbinnginx服务器的主程序

Nginx的信号

nginx的运行机制为一个主进程以及多个worker process,我们可以通过像主进程发送信息来管控整个服务。

比如在一个启动了Nginx的服务器运行ps -ef | grep nginx,可以看到如下结果:

root     27141     1  0 16:00 ?        00:00:00 nginx: master process ./nginx
nobody   27142 27141  0 16:00 ?        00:00:00 nginx: worker process
root     27222 17292  0 16:07 pts/0    00:00:00 grep --color=auto nginx

可以看到27141为主进程,27142为worker process

我们可以通过向主进程发送信号以控制Nginx

比如:

kill QUIT 27141 //停止nginx

nginx主进程的PID还可以通过nginx启动的时候写入到logs/nginx.pid文件中的进程号获取

除了可以通过kill命令发送信号,还可以通过nginx客户端发送信号


Nginx可以接受的信号如下:

信号 作用
TERM 或 INT 快速停止Nginx服务
QUIT 平缓停止Nginx服务
HUP 使用新的配置文件启动进程,之后平缓停止原有进程(“平滑重启”)
USR1 重新打开日志文件
USR2 使用新版Nginx启动服务,之后平缓停止原有进程(“平滑升级”)
WINCH 平缓停止worker process ,用于Nginx平滑升级

Nginx也会有内置命令自己读取/log/nginx.pid文件,并发送信号,对应如下:

  • reload : HUP
  • reopen : USR1
  • stop : TERM
  • quit : QUIT

建议使用上面的方式,原理都是一样的,不过更加简单


Nginx 命令

输入nginx -h,可以看到官方说明如下:

  • -v : 查看版本
  • -V :查看版本以及配置
  • -t : 测试配置是否有效
  • -q : 测试配置时只提示错误信息
  • -s : 给主进程发送信息,stop quit reopen reload
  • -p : 指定nginx 服务器路径前缀
  • -c : 指定配置文件路径
  • -g : 指定nginx附加配置文件路径

停止

Nginx停止有两种方式,分别是平滑停止和立即停止。

  • 平滑停止指的是首先处理完当前正在处理器请求,并且停止接收请求,然后再停止服务器。

    对应nginx -s quit

  • 立即停止指的是立即丢弃当前所有连接,停止工作。

    对应nginx -s stop

重启

对用Nginx的重启,也包含两种方式,第一种是关闭Nginx,然后再打开,这样整个程序都会重启加载,第二种是平滑重启。

  • 暴力重启

    nginx -s stop

    nginx -s start

  • 平滑重启

    Nginx的平滑重启原理如下,首先Nginx接收到信号后,会读取新的Nginx服务,然后平缓(QUIT)的关闭旧的服务进程,如果新的配置有问题,则仍然使用旧的Nginx服务

升级

Nginx升级也有暴力升级和平滑升级两种方式,第一种方式和重启差不多,下面详细说第二种方式。

Nginx没有内置的升级命令,所有只能使用kill或则nginx二进制文件发送信号。

升级过程如下:

  • 首先,Nginx接收到USER2信号后,会将旧的nginx.pid文件添加后缀.oldbin
  • 然后,Nginx会执行新版本的Nginx服务器的二进制文件启动服务,如果新的服务启动成功,则系统中会存在两个Nginx服务,
  • 然后,需要向旧的Nginx服务进程发送WINCH信号,使得就得nginx服务平滑停止

过程如下:

首先将升级的二进制文件替换掉旧的二进制文件,然后执行以下命令

  • ./nginx -g USR2 //发送平滑升级信号,此信号会使得Nginx自动启动新的进程,并修改pid文件

    此命令执行完毕后,系统中会有两个Nginx进程同时服务

  • ./nginx -g WINCH //发送平滑停止旧服务器信号,

    此命令用于停止旧的Nginx进程的worker process,但是master process还存在

  • ./nginx -g QUIT //使得旧的服务退出

    执行到这里后,整个旧的Nginx便退出服务

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant