We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
在Linux版本的Nginx中。
Linux
Nginx
主要包含以下4个目录:
conf
nginx
nginx.conf
html
500 error
logs
sbin
nginx的运行机制为一个主进程以及多个worker process,我们可以通过像主进程发送信息来管控整个服务。
worker process
比如在一个启动了Nginx的服务器运行ps -ef | grep 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
kill QUIT 27141
nginx主进程的PID还可以通过nginx启动的时候写入到logs/nginx.pid文件中的进程号获取
PID
logs/nginx.pid
除了可以通过kill命令发送信号,还可以通过nginx客户端发送信号
kill
Nginx可以接受的信号如下:
在Nginx也会有内置命令自己读取/log/nginx.pid文件,并发送信号,对应如下:
/log/nginx.pid
reload
HUP
reopen
USR1
stop
TERM
quit
QUIT
建议使用上面的方式,原理都是一样的,不过更加简单
输入nginx -h,可以看到官方说明如下:
nginx -h
-v
-V
-t
-q
-s
stop quit reopen reload
-p
-c
-g
Nginx停止有两种方式,分别是平滑停止和立即停止。
平滑停止指的是首先处理完当前正在处理器请求,并且停止接收请求,然后再停止服务器。
对应nginx -s quit
nginx -s quit
立即停止指的是立即丢弃当前所有连接,停止工作。
对应nginx -s stop
nginx -s stop
对用Nginx的重启,也包含两种方式,第一种是关闭Nginx,然后再打开,这样整个程序都会重启加载,第二种是平滑重启。
暴力重启
nginx -s stop nginx -s start
nginx -s start
平滑重启
Nginx的平滑重启原理如下,首先Nginx接收到信号后,会读取新的Nginx服务,然后平缓(QUIT)的关闭旧的服务进程,如果新的配置有问题,则仍然使用旧的Nginx服务
Nginx升级也有暴力升级和平滑升级两种方式,第一种方式和重启差不多,下面详细说第二种方式。
Nginx没有内置的升级命令,所有只能使用kill或则nginx二进制文件发送信号。
升级过程如下:
USER2
nginx.pid
.oldbin
WINCH
过程如下:
首先将升级的二进制文件替换掉旧的二进制文件,然后执行以下命令
./nginx -g USR2 //发送平滑升级信号,此信号会使得Nginx自动启动新的进程,并修改pid文件
./nginx -g USR2
pid
此命令执行完毕后,系统中会有两个Nginx进程同时服务
./nginx -g WINCH //发送平滑停止旧服务器信号,
./nginx -g WINCH
此命令用于停止旧的Nginx进程的worker process,但是master process还存在
master process
./nginx -g QUIT //使得旧的服务退出
./nginx -g QUIT
执行到这里后,整个旧的Nginx便退出服务
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Nginx的目录
在
Linux
版本的Nginx
中。主要包含以下4个目录:
conf
:nginx
的配置文件,其中nginx.conf
是nginx
服务器的主要配置文件、html
: 存在Nginx
服务器在运行过程中调用的一些html
网页文件。比如500 error
,以及默认首页等logs
:nginx
的日志目录sbin
:nginx
服务器的主程序Nginx的信号
nginx
的运行机制为一个主进程以及多个worker process
,我们可以通过像主进程发送信息来管控整个服务。比如在一个启动了
Nginx
的服务器运行ps -ef | grep nginx
,可以看到如下结果:可以看到27141为主进程,27142为
worker process
。我们可以通过向主进程发送信号以控制
Nginx
比如:
kill QUIT 27141
//停止nginxNginx
可以接受的信号如下:Nginx
服务Nginx
服务Nginx
启动服务,之后平缓停止原有进程(“平滑升级”)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
的重启,也包含两种方式,第一种是关闭Nginx
,然后再打开,这样整个程序都会重启加载,第二种是平滑重启。暴力重启
平滑重启
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 -g WINCH
//发送平滑停止旧服务器信号,./nginx -g QUIT
//使得旧的服务退出The text was updated successfully, but these errors were encountered: