123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #!/usr/bin/openrc-run
- # Copyright 1999-2017 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_CONFIGFILE=${NGINX_CONFIGFILE:-/etc/nginx/nginx.conf}
- command="/usr/bin/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"
- }
|