90 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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"
 | |
| }
 | 
