nginx (FreeBSD port)

Alexander Popkov voodoo_alex at mail.ru
Fri Dec 3 17:41:20 MSK 2004


Hello Dmitry,

Friday, December 3, 2004, 5:19:43 PM, you wrote:
SAO>> возникло желание дописать следующую фичи:
SAO>> 1) остановка nginx перед удаление порта/пакета
SAO>> 2) запуск nginx после установки порта/пакета

DM> Зачем, если nginx умеет рестартовать при апгрейде бинарника плавно, без 
DM> даунтайма?

действительно... можно ведь этот процесс автоматизировать

навскидку (не тестировал)

NGINX_ROOT=/usr/local/nginx
NGINX_LOGS=logs
NGINX_SBIN=sbin

# на солярке родной ps не понимает -awx
PS_CMD=/usr/ucb/ps

NGINX_PID=${NGINX_ROOT}/${NGINX_LOGS}/nginx.pid
NGINX_NEWPID=${NGINX_ROOT}/${NGINX_LOGS}/nginx.pid.newbin

if [ -f ${NGINX_PID} ]; then
   PID=`cat ${NGINX_PID}`
   echo -n "Graceful change nginx binary... "
   kill -USR2 ${PID}
   if [ -f ${NGINX_NEWPID} ]; then
      kill -WINCH ${PID}
      while true; do
            NEED_WAIT=`${PS_CMD} -awx|grep "nginx: worker process is shutting down"`
            if [ -z "${NEED_WAIT}" ]; then
               break
            fi
            sleep 1
      done
      kill -QUIT ${PID}
      mv -f ${NGINX_NEWPID} ${NGINX_PID}
      NEW_PID=`cat ${NGINX_PID}`
      echo "new binary running, pid=${NEW_PID}"
   elif
      echo "failed, check log files"
   fi
fi

-- 
Best regards,
 Alexander                            mailto:voodoo_alex at mail.ru






More information about the nginx-ru mailing list