一々DNSから外して入れ替えてまた投入してとか面倒なので。
クライアント側からは止まったようには感じられない、はず。
reinstall_nginx.sh
# nginxのパスが通ってることを期待
OLD_PID=`cat /var/run/nginx.pid`
echo -n "make new master. "
sudo kill -USR2 ${OLD_PID}
MASTER=`ps ax|grep '[ n]ginx: master'|wc -l`
while [ $MASTER -eq 1 ] ; do
sleep 1
MASTER=`ps ax|grep '[ n]ginx: master'|wc -l`
echo -n .
done
echo "ready"
# 高負荷環境だとココで数分待たされるかも
echo -n "shutting down old workers. "
sudo kill -WINCH ${OLD_PID}
WORKER=`ps axo ppid,pid|grep ${OLD_PID}|wc -l`
while [ $WORKER -gt 2 ] ; do
sleep 1
WORKER=`ps axo ppid,pid|grep ${OLD_PID}|wc -l`
echo -n .
done
echo "killed"
sudo kill -QUIT ${OLD_PID}
echo "old master(${OLD_PID}) killed"