我正在为django编写一个0dt部署脚本。 在进行部署时,它会创建一个具有最新代码版本的新django服务器,写入指向正确套接字的新nginx配置并重新加载nginx。
如何找出旧的nginx工作者何时回复所有连接,以便我可以删除旧的django服务器?
看着工人的pid是最好的选择吗?我不能使用nginx status url,因为旧配置停止接收连接。
另外,还有另一个问题。 Django是我的后端,nginx也代理节点服务器为客户端服务。是否可以查看单个上游的活动连接?否则我将不得不等待所有连接在前端完成。
答案 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
[...]