Created
January 11, 2017 17:04
-
-
Save c0psrul3/06ebc274733449258ba5f74b9eacaf32 to your computer and use it in GitHub Desktop.
Nginx init script for TrueOS / OpenRC
This file contains hidden or 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 | |
# Copyright 1999-2012 Gentoo Foundation | |
# 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_config=${nginx_config:-/usr/local/etc/nginx/nginx.conf} | |
command="/usr/local/sbin/nginx" | |
command_args="-c ${nginx_config}" | |
pidfile=${pidfile:-/var/run/nginx.pid} | |
user=${user:-www} | |
group=${group:-www} | |
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() { | |
checkpath -q -d -m 0755 -o root:wheel /var/log/nginx | |
checkpath -q -d -m 0755 -o ${user}:${group} /var/tmp/nginx | |
checkpath -q -d -m 0755 -o ${user}:${group} /var/tmp/nginx/{client,proxy,fastcgi,scgi,uwsgi} | |
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" | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment