nginx的启用和停止有多种方式1、nginx服务的信号控制;2、nginx的命令行控制。
1、信号控制
ps -ef | grep nginx
可以查询跟nginx有关的所有线程。
有一个master进程和worker进程
我们作为管理员,只需要通过master进程发送信号来控制nginx,这时需要俩个前提条件:一个是要操作的master进程,一个是信号。
如何获取master进程的pid:1、ps -ef | grep nginx可以查询;2、logs目录有nginx.pid文件可以查询进程id。
信号种类:
调用命令:kill -signal pid signal即为信号 pid为master进程id
其中HUB命令是会删除原来的worker进程,新创建一个worker进程读取的最新的配置文件,pid也变了。 USR2命令可以不停止nginx运行的情况下,完成nginx的升级。流程是:master接收到USR2信号后。会将现在的所有master、worker及其之间的联系都复制一份,将新创建的master的id存放在nginx/logs/nginx.pid中,原来的master 的id存放在新创建的nginx/logs/nginx.pid.oldbin文件中,确认更新完毕后,会通过QUIT命令(需要程序员手动去执行)关闭原来的master相关进程。
比如优雅的关闭服务
kill -QUIT 1213
//或者 more为获取该文件中的信息,其中 ` 为漂号 不是单引号,需要切换为英文才能打出来
kill -USR1 `more /usr/local/nginx/logs/nginx.pid`
2、nginx命令行控制
nginx版本更新:
方案一:使用nginx服务信号进行升级
先将sbin下的nginx-old 老版本进行备份
cd /usr/local/nginx/sbin
mv nginx nginxold
将nginx-new新版本安装目录编译后的objs目录下的nginx文件,拷贝到/usr/local/nginx/sbin目录下。
cd /../nginx-1.26.2/objs
cp nginx /usr/local/nginx/sbin
发送USR2信号给nginx-old对应的master进程
kill -USR2 `more /usr/local/logs/nginx.pid`
发送QUIT信号给nginx-old对应的master进程。
kill -QUIT `more /usr/local/logs/nginx.pid.oldbin`
方案二:使用make命令进行更新。
第一步和第二步与方案一相同。
第三步:进入nginx-new安装目录 执行 make upgrade
第四步:查看是否更新完成
./nginx -v