| #!/sbin/runscript |
| # Copyright 1999-2013 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| |
| extra_commands="configtest" |
| extra_started_commands="upgrade reload" |
| |
| description="Robust, small and high performance http and reverse proxy server" |
| description_configtest="Run nginx' internal config check." |
| description_upgrade="Upgrade the nginx binary without losing connections." |
| description_reload="Reload the nginx configuration without losing connections." |
| |
| nginx_config=${nginx_config:-/etc/nginx/nginx.conf} |
| |
| command="/usr/sbin/nginx" |
| command_args="-c ${nginx_config}" |
| pidfile=${pidfile:-/run/nginx.pid} |
| user=${user:-nginx} |
| group=${group:-nginx} |
| |
| depend() { |
| need net |
| use dns logger netmount |
| } |
| |
| start_pre() { |
| if [ "${RC_CMD}" != "restart" ]; then |
| configtest || return 1 |
| fi |
| } |
| |
| stop_pre() { |
| if [ "${RC_CMD}" = "restart" ]; then |
| configtest || return 1 |
| fi |
| } |
| |
| stop_post() { |
| rm -f ${pidfile} |
| } |
| |
| reload() { |
| configtest || return 1 |
| ebegin "Refreshing nginx' configuration" |
| kill -HUP `cat ${pidfile}` &>/dev/null |
| eend $? "Failed to reload nginx" |
| } |
| |
| upgrade() { |
| configtest || return 1 |
| 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 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" |
| } |
| |
| configtest() { |
| ebegin "Checking nginx' configuration" |
| ${command} -c ${nginx_config} -t -q |
| |
| if [ $? -ne 0 ]; then |
| ${command} -c ${nginx_config} -t |
| fi |
| |
| eend $? "failed, please correct errors above" |
| } |