找出旧的nginx配置何时丢弃所有请求的最佳方法

时间:2016-09-06 22:28:45

标签: django nginx

我正在为django编写一个0dt部署脚本。 在进行部署时,它会创建一个具有最新代码版本的新django服务器,写入指向正确套接字的新nginx配置并重新加载nginx。

如何找出旧的nginx工作者何时回复所有连接,以便我可以删除旧的django服务器?

看着工人的pid是最好的选择吗?我不能使用nginx status url,因为旧配置停止接收连接。

另外,还有另一个问题。 Django是我的后端,nginx也代理节点服务器为客户端服务。是否可以查看单个上游的活动连接?否则我将不得不等待所有连接在前端完成。

1 个答案:

答案 0 :(得分:0)

好吧,如果有人来找它,我最终得到了这个解决方案:

 [...]
 # Run API
 echo ":: Starting new server"
 pm2 start ./server.sh --name api-$PRJ > /dev/null

 # Copy nginx config
 #echo ":: Swap nginx config"
 rm ~/nginx/api.atados.com.br.* 
 cp ~/deploy/api/nginx.conf ~/nginx/api.atados.com.br.$PRJ.conf
 perl -pi -e 's/{PRJ}/$PRJ/g' ~/nginx/api.atados.com.br.$PRJ.conf

 # Grab workers pid
 workers=`ps -aux | grep "nginx: worker" | sed "$ d" | awk '{print $2}'`

 # Reload nginx
 echo ":: Reloading nginx and waiting for old connections to drop."
 sudo service nginx reload > /dev/null

 # Wait for workers to die
 for job in $workers
 do
      while [ -e /proc/$job ]
      do
          sleep 1
      done
 done

 # Close old server
 pm2 list | grep api | awk '{print $2}' | grep -v $PRJ | xargs pm2 delete > /dev/null
 [...]