Nginx服务信号控制
Nginx的信号类型
使用ps -ef | grep nginx
命令能看到nginx的命令的进程。结果如下。
有master和worker进程。worker进程是打工的,master进程是管家。一个master进程可以控制多个worker进程。
Nginx平滑升级
nginx平滑升级的场景是当服务器升级更新的时候,不能停止服务。现在我的新的服务器的/opt/nginxPackage/中有2个nginx的压缩包【nginx-1.14.2.tar.gz;nginx-1.16.1.tar.gz】,现在已经用简单的源码安装了nginx-1.14.2。所在目录如下/usr/local/nginx/sbin
。并且能够成功访问。
此时就需要从1.14版本升级到1.16版本。在解压1.16版本时不需要 make install
只需要 ./configure
和make
这就会在解压目录。会多出objs文件夹
在objs中会有一个nginx的二进制文件,是16版本的
用Nginx服务信号升级
总之就是把1.16版本的nginx替换到1.14版本的sbin目录下。如下图
执行kill -USER2 cat /usr/local/nginx/logs/nginx.pid
会产生2个master和worker进程。而我的没有不知道怎么回事。所以这个方法失败了。提示 -bash: kill: USER2: 无效的信号声明。平滑升级失败。需要手动的在/usr/local/nginx/sbin下 执行 ./nginx -s reload
用Nginx的升级命令
准备过程上述的图一样才行。不同点在于在执行执行make upgrade在1.16的安装目录下。先nginx -t检测,在睡1秒再kill -USER2开启新的master和worker进程。关闭老的master进程。但为什么单独的kill -USER2 cat /usr/local/nginx/logs/nginx.pid
语句会报错呢?不知道