diff options
Diffstat (limited to 'main/nginx-lua/nginx.initd')
-rwxr-xr-x | main/nginx-lua/nginx.initd | 75 |
1 files changed, 51 insertions, 24 deletions
diff --git a/main/nginx-lua/nginx.initd b/main/nginx-lua/nginx.initd index bec20dddaa..b1e0fe7856 100755 --- a/main/nginx-lua/nginx.initd +++ b/main/nginx-lua/nginx.initd @@ -1,42 +1,69 @@ #!/sbin/openrc-run +# Copyright 1999-2004 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/www-servers/nginx/files/nginx.init-r2,v 1.1 2010/01/03 19:51:41 djc Exp $ -extra_started_commands="reload" +extra_started_commands="upgrade reload" extra_commands="configtest" +conffile=/etc/nginx/nginx.conf + +pidfile=/var/run/nginx/nginx.pid +command=/usr/sbin/nginx +command_args="-c $conffile" + + depend() { need net use dns logger netmount } -CONFFILE=${CONFFILE:-/etc/nginx/${SVCNAME}.conf} -PIDFILE=${PIDFILE:-/var/run/${SVCNAME}.pid} - -configtest() { - ebegin "Checking ${SVCNAME} configuration" - mkdir -p /tmp/nginx - /usr/sbin/nginx -c ${CONFFILE} -t - eend $? "failed, please correct errors above" +start_pre() { + configtest || return 1 } -start() { +reload() { configtest || return 1 - ebegin "Starting ${SVCNAME}" - start-stop-daemon --start --pidfile "${PIDFILE}" \ - --exec /usr/sbin/nginx -- -c ${CONFFILE} -g "pid ${PIDFILE};" - eend $? "Failed to start ${SVCNAME}" + ebegin "Refreshing nginx' configuration" + kill -HUP `cat $pidfile` &>/dev/null + eend $? "Failed to reload nginx" } -stop() { +upgrade() { configtest || return 1 - ebegin "Stopping ${SVCNAME}" - start-stop-daemon --stop --pidfile "${PIDFILE}" - eend $? "Failed to stop ${SVCNAME}" - rm -f "${PIDFILE}" + ebegin "Upgrading nginx" + + einfo "Sending USR2 to old binary" + kill -USR2 `cat $pidfile` &>/dev/null + + einfo "Sleeping 3 seconds before pid-files checking" + sleep 3 + + if [ ! -f $pidfile.oldbin ]; then + eerror "File with old pid ($pidfile.oldbin) not found" + return 1 + fi + + if [ ! -f $pidfile ]; then + eerror "New binary failed to start" + return 1 + fi + + einfo "Sleeping 3 seconds before WINCH" + sleep 3 ; kill -WINCH `cat $pidfile.oldbin` + + einfo "Sending QUIT to old binary" + kill -QUIT `cat $pidfile.oldbin` + + einfo "Upgrade completed" + + eend $? "Upgrade failed" } -reload() { - configtest || return 1 - ebegin "Refreshing ${SVCNAME} configuration" - kill -HUP $(cat "${PIDFILE}") &>/dev/null - eend $? "Failed to reload nginx" +configtest() { + ebegin "Checking nginx' configuration" + checkpath --directory --owner nginx:nginx ${pidfile%/*} + $command -c $conffile -tq + eend $? "failed, please correct errors above" } + |