Re: Где правильно взять /etc/init.d/nginx?

Gena Makhomed gmm на csdoc.com
Вт Июн 15 19:23:20 MSD 2010


On 15.06.2010 17:32, Andrey Zloy wrote:

> В варианте скрипта для Gentoo есть приятная реализация апгрейда
> nginx'а. Предлагаю включить ее в офф.скрипт, если он будет.

тут есть много избыточных шагов и больших задержек,
по сравнению с эталонной реализацией из nginx makefile:

upgrade:
         $NGX_SBIN_PATH -t
         kill -USR2 \`cat $NGX_PID_PATH\`
         sleep 1
         test -f $NGX_PID_PATH.oldbin
         kill -QUIT \`cat $NGX_PID_PATH.oldbin\`

P.S. в makefile следующая строка выполняется
только после успешного выполнения предыдущей.

когда я дорабатывал init-скрипт nginx для CentOS,
то просто 1:1 переписал логику работы из makefile:

online_upgrade() {
     configtest_q || configtest || return 6
     echo -n $"Upgrading $instance: "
     kill -USR2 `cat /var/run/$instance.pid`
     sleep 1
     if test -f /var/run/$instance.pid.oldbin
     then
         kill -QUIT `cat /var/run/$instance.pid.oldbin`
         success $"$instance online upgrade"
         echo
     else
         failure $"$instance online upgrade"
         echo
         exit 1
     fi
}

> upgrade() {
> 	configtest || return 1
> 	ebegin "Upgrading nginx"
>
> 	einfo "Sending USR2 to old binary"
> 	kill -USR2 `cat /var/run/nginx.pid`&>/dev/null
>
> 	einfo "Sleeping 3 seconds before pid-files checking"
> 	sleep 3
>
> 	if [ ! -f /var/run/nginx.pid.oldbin ]; then
> 		eerror "File with old pid not found"
> 		return 1
> 	fi
>
> 	if [ ! -f /var/run/nginx.pid ]; then
> 		eerror "New binary failed to start"
> 		return 1
> 	fi
>
> 	einfo "Sleeping 3 seconds before WINCH"
> 	sleep 3 ; kill -WINCH `cat /var/run/nginx.pid.oldbin`
>
> 	einfo "Sending QUIT to old binary"
> 	kill -QUIT `cat /var/run/nginx.pid.oldbin`
>
> 	einfo "Upgrade completed"
>
> 	eend $? "Upgrade failed"
> }

а этот код наверное написан на основании документации:

http://sysoev.ru/nginx/docs/control.html#upgrade

-- 
Best regards,
  Gena




Подробная информация о списке рассылки nginx-ru