Nginx服务的启停控制和命令用法以及平滑升级

安装Nginx服务

安装过程在下面的文章当中,里面详细的介绍了Nginx服务的安装过程。
Nginx编译安装详细过程

Nginx服务的启停控制

Nginx启停控制的办法中一共有两种方法可以用来对Nginx服务的进行启停操作。

1.信号控制(非nginx内置命令中的信号控制)

nginx是由一个主进程(master process)和多个工作进程(worker process)组成。
所谓信号控制就是给进程发送特定的信号,进程收到信号后做出相应的操作。
那么,如何给主进程发送信号呢?这就需要知道主进程的进程号是多少了。

获取进程号:

cat /usr/local/nginx/logs/nginx.pid		#nginx服务启动后自动产生的pid文件,内容只有进程号

在这里插入图片描述

ps -ef | grep nginx		#使用ps方法查看nginx进程号,红线内第二列就是进程号

在这里插入图片描述
Nginx服务可接收的信号

信号 作用
TERM或INT 快速停止Nginx服务,快速停止是指立即停止当前Nginx服务正在处理的所有网络请求,马上丢弃连接,停止工作。
QUIT 平缓停止Nginx服务,平缓停止是指允许Nginx服务将当前正在处理的网络请求处理完成,但不接受新的请求,之后关闭连接,停止工作。
HUP 使用新的配置文件启动进程,之后平缓停止原有进程,也就是所谓的 “ 平滑重启 ”
USR1 重新打开日志文件,常用于日志切割
USR2 使用新版本的Nginx文件启动服务,之后平缓停止原有Nginx进程,也就是所谓的 “ 平滑升级 ”
WINCH 平滑关闭工作进程(work process)

启动Nginx服务

/usr/local/nginx/sbin/nginx		#绝对路径启用nginx,第一篇里面有软链接启用nginx服务

停止Nginx服务

kill -TERM | -INT | -QUIT `cat /usr/local/nginx/logs/nginx.pid`	#选择三个中的一个即可,看需求而定

重启Nginx服务

kill -TERM | -INT | -QUIT `cat /usr/local/nginx/logs/nginx.pid`		#先关闭
/usr/local/nginx/sbin/nginx		#在开启

重载Nginx服务

kill -HUP `cat /usr/local/nginx/logs/nginx.pid`		#平滑重启
2.Nginx内置命令

内置命令是nginx安装目录下的sbin目录中的nginx二进制文件自带的,比如mysql的mysql -u root -p***一样,-u和-p就是内置命令用法,Nginx一样也拥有这些,只是命令的用法各不相同。

Nginx内置命令的相关用法

参数 作用
-?,-h 显示帮助信息
-v 打印版本号并退出
-V 打印版本号和配置并退出
-t 测试配置正确性并退出
-q 测试配置时只显示错误
-s signal 向主进程发送信号,只支持:stop(快速停止)、quit(平缓停止)、reopen(重新打开日志文件)、reload(平滑重启)
-p prefile 设置前缀路径,默认为:/usr/local/nginx,这个默认就是你预选时指定–prefix的路径
-c filename 指定Nginx配置文件路径,默认:conf/nginx.conf
-g directives 从配置文件中设置全局指令

启动Nginx服务

/usr/local/nginx/sbin/nginx		#绝对路径启用nginx,安装篇里面有软链接启用nginx服务

停止Nginx服务

nginx -s stop | quit		#自己按需求选择

重启Nginx服务

nginx -s stop | quit	#先关闭
/usr/local/nginx/sbin/nginx		#在开启

重载Nginx服务

nginx -s reload		#平滑重启

Nginx服务的平滑升级

平滑升级的原理

旧版本Nginx服务收到USR2信号后,将自己的nginx.pid文件添加后缀.oldbin,变为nginx.pid.oldbin,然后执行新版本的Nginx服务,如果新版本Nginx服务启动成功后会有两个新旧版本的Nginx服务同时提供WEB服务,之后就可以向旧版本Nginx服务发送WINCH信号使其的工作进程平滑停止,再向旧版本服务发送QUIT信号使其主进程平滑停止,并删除nginx.pid.oldbin文件。在发送WINCH信号前可随时停止新版本Nginx服务。

查看配置选项

/usr/local/nginx/sbin/nginx -V		#复制configure arguments:里面的内容,保持新版本和旧版本的配置选项都一致

在这里插入图片描述
在这里插入图片描述
备份重要文件

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_back		#备份旧版本的nginx命令
cp -r /usr/local/nginx/conf/ /usr/local/nginx/conf_back/	#备份旧版本的nginx配置文件
#还有其他的文件可以进行备份,看你们自己,比如/usr/local/nginx/logs目录里面的日志文件。

安装新版本Nginx

wget http://nginx.org/download/nginx-1.6.0.tar.gz	#下载新版本nginx文件
tar -zxvf nginx-1.6.0.tar.gz -C /usr/src	#解压nginx文件
cd /usr/src/nginx-1.6.0.tar.gz		#切换到nginx-1.6.0.tar.gz目录
./configure --prefix=/usr/local/nginx	#这个就是第一步复制的配置选项
make	#切记这步不需要make install了否则会将原来的配置文件覆盖掉

新版本替换旧版本

cp objs/nginx /usr/local/nginx/sbin/	#新版本替换旧版本,把新版本nginx文件复制到/usr/local/nginx/sbin/目录下
/usr/local/nginx/sbin/nginx -t	#测试是否替换成功
/usr/local/nginx/sbin/nginx -V	#测试是否替换成功

在这里插入图片描述
平滑切换

kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
kill -WINCH `cat /usr/local/nginx/logs/nginx.pid.oldbin`	#此时还可以回滚到旧版本中去,请看下面的回滚操作
kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`

在这里插入图片描述
回滚操作

注意:回滚操作必须在对旧版本发送QUIT信号之前。

kill -HUP `cat /usr/local/nginx/logs/nginx.pid.oldbin`	#此时会重新启动工作进程
kill -QUIT 新版本进程号	#然后再将新版本杀死(QUIT、INT、TERM都可以)
#此时就又返回到了原来状态,如果还想升级的话就继续对旧版本发送USR2信号,还是按照上面的操作来。

猜你喜欢

转载自blog.csdn.net/qq_42279077/article/details/105895650
今日推荐