Nginx的信号类型

​ 使用ps -ef | grep nginx命令能看到nginx的命令的进程。结果如下。

nginx的信号类型 有master和worker进程。worker进程是打工的,master进程是管家。一个master进程可以控制多个worker进程。

nginx的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。并且能够成功访问。

nginx的成功访问

​ 此时就需要从1.14版本升级到1.16版本。在解压1.16版本时不需要 make install 只需要 ./configure make这就会在解压目录。会多出objs文件夹image-20220325145839656

image-20220325145950213

​ 在objs中会有一个nginx的二进制文件,是16版本的

objs目录

用Nginx服务信号升级

​ 总之就是把1.16版本的nginx替换到1.14版本的sbin目录下。如下图

image-20220325150821998

执行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语句会报错呢?不知道

nginx升级成功