2016-09-06 21 views
0

我正在爲django編寫一個0dt部署腳本。 進行部署時,它會創建一個包含最新代碼版本的新django服務器,寫入指向正確套接字的新nginx配置並重新加載nginx。找出舊nginx配置何時刪除所有請求的最佳方法

如何知道舊nginx工作人員何時回覆所有連接,以便刪除舊的django服務器?

看着工人pid最好的選擇?我無法使用nginx狀態url,因爲舊配置停止接收連接。

另外還有另一個問題。 Django是我的後端,nginx也代理節點服務器來爲客戶端服務。是否有可能查看單個上游的活動連接?否則,我將不得不等待所有連接在前端完成。

回答

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 
[...] 
相關問題