Created
August 31, 2022 17:03
-
-
Save onewheelskyward/f9259dd7afe77fc16980714708fea21f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/sbin/openrc-run | |
# Distributed under the terms of the GNU General Public License v2 | |
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_CONFIGFILE=${NGINX_CONFIGFILE:-/etc/nginx/nginx.conf} | |
command="/usr/sbin/nginx" | |
command_args="-c \"${NGINX_CONFIGFILE}\"" | |
start_stop_daemon_args=${NGINX_SSDARGS:-"--wait 1000"} | |
pidfile=${NGINX_PIDFILE:-/run/nginx.pid} | |
user=${NGINX_USER:-nginx} | |
group=${NGINX_GROUP:-nginx} | |
retry=${NGINX_TERMTIMEOUT:-"TERM/60/KILL/5"} | |
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" | |
start-stop-daemon --signal SIGHUP --pidfile "${pidfile}" | |
eend $? "Failed to reload nginx" | |
} | |
upgrade() { | |
configtest || return 1 | |
ebegin "Upgrading nginx" | |
einfo "Sending USR2 to old binary" | |
start-stop-daemon --signal SIGUSR2 --pidfile "${pidfile}" | |
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 | |
# Cannot send "WINCH" using start-stop-daemon yet, https://bugs.gentoo.org/604986 | |
kill -WINCH $(cat "${pidfile}.oldbin") | |
einfo "Sending QUIT to old binary" | |
start-stop-daemon --signal SIGQUIT --pidfile "${pidfile}.oldbin" | |
einfo "Upgrade completed" | |
eend $? "Upgrade failed" | |
} | |
configtest() { | |
ebegin "Checking nginx' configuration" | |
${command} -c "${NGINX_CONFIGFILE}" -t -q | |
if [ $? -ne 0 ]; then | |
${command} -c "${NGINX_CONFIGFILE}" -t | |
fi | |
eend $? "failed, please correct errors above" | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment