Nginx热部署功能

nginx作为一个优秀的web服务器,优秀的反向代理服务器,并且nginx也支持高可用的特性,nginx还支持热部署的功能。
热部署的特点:在不重启或者关闭进程的情况下,新的应用直接替换旧的应用

更换nginx的二进制命令版本 热部署大致流程

  1. 备份旧的程序,二进制文件,备份nginx命令,/opt/tbnginx33/sbin/nginx
  2. 编译安装新的二进制文件,覆盖旧的二进制文件
  3. 发送USR2信号给旧的master进程
  4. 发送WINCH信号给旧的master进程
  5. 发送QUIT信号给旧的master进程

nginx更换版本热部署操作

nginx工作模式是master-worker

  1. 确认当前的nginx版本,并且进行备份操作

    nginx -v
    mv nginx nginx.233 nginx.233 -v #我们也可以查看旧版本的版本号

  2. 下载编译安装新版本的nginx

    wget下载 >> tar解压 >> ./configure安装 >> make >> make insatll

  3. 发送一个USR2信号给旧的master process,作用是让nginx旧版本停止接收用户请求,并且切换为新的nginx版本

    kill -USR2 ‘cat /opt/tbnginx233/logs/nginx.pid’

    当执行完上述命令,nginx-master旧的会重新命命它的pid文件,加上.oldbin后缀,然后再启动一个新的master主进程,以及worker,使用新版本的二进制命令,此时新的nginx进程就平滑过渡了原有进程

  4. 检查nginx进程状态

    ps -ef | grep nginx

    这个时候我们应该都能够看到两组nginx进程,且第二组的进程号是由原进程衍生出来的

    我们查看两个进程号的配置文件,确定新的进程文件是不是第二组的进程号

    cat nginx.pid.oldbin cat nginx.pid

  5. 此时发送WINCH信号,给旧的master进程,让旧的master进程优雅的退出

    kill -WINCH ‘cat /opt/tbnginx233/logs/nginx.pid.oldbin’

    这个时候我们才用ps查看nginx进程,应该可以看到第一组的原有nginx进程所有worker进程都已经退出了

  6. 此时我们可以查看nginx 服务器能否正常使用,如果一切正常,我们就可以讲旧的master主进程也给干掉了,也就完成了热部署的全过程

    kill 旧master进程号