| 
									
										
										
										
											2015-02-27 00:58:55 +00:00
										 |  |  | #!/sbin/runscript | 
					
						
							|  |  |  | # Copyright 1999-2013 Gentoo Foundation | 
					
						
							|  |  |  | # Distributed under the terms of the GNU General Public License v2 | 
					
						
							| 
									
										
										
										
											2015-09-05 22:02:27 +00:00
										 |  |  | # $Id$ | 
					
						
							| 
									
										
										
										
											2015-02-27 00:58:55 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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" | 
					
						
							|  |  |  | } |