]> git.pld-linux.org Git - packages/nginx.git/blame_incremental - nginx.init
up to 1.26.1 (fixes CVE-2024-32760 CVE-2024-31079 CVE-2024-35200 CVE-2024-34161)
[packages/nginx.git] / nginx.init
... / ...
CommitLineData
1#!/bin/sh
2#
3# nginx Nginx Web Server (@type@ version)
4#
5# chkconfig: 345 85 15
6# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
7# proxy and IMAP/POP3 proxy server
8# processname: nginx
9# pidfile: /var/run/nginx.pid
10# config: /etc/nginx/nginx.conf
11
12# Source function library
13. /etc/rc.d/init.d/functions
14
15# Source networking configuration.
16. /etc/sysconfig/network
17
18nginx="/usr/sbin/nginx"
19svname="nginx"
20prog=${nginx##*/}
21
22sysconfig="/etc/sysconfig/$prog"
23lockfile="/var/lock/subsys/$prog"
24pidfile="/var/run/$prog.pid"
25
26NGINX_CONF_FILE="/etc/nginx/$prog.conf"
27
28# Get service config
29[ -f $sysconfig ] && . $sysconfig
30
31# Check that networking is up.
32if is_yes "${NETWORKING}"; then
33 if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
34 msg_network_down "$svname"
35 exit 1
36 fi
37else
38 exit 0
39fi
40
41# configtest itself
42# must return non-zero if check failed
43# output is discarded if checkconfig is ran without details
44configtest() {
45 $nginx -t -c $NGINX_CONF_FILE
46}
47
48# wrapper for configtest
49checkconfig() {
50 local details=${1:-0}
51
52 if [ $details = 1 ]; then
53 # run config test and display report (status action)
54 show "Checking %s configuration" "$svname"; busy
55 local out
56 out=$(configtest 2>&1)
57 RETVAL=$?
58 if [ $RETVAL = 0 ]; then
59 ok
60 else
61 fail
62 fi
63 [ "$out" ] && echo >&2 "$out"
64 else
65 # run config test and abort with nice message if failed
66 # (for actions checking status before action).
67 configtest >/dev/null 2>&1
68 RETVAL=$?
69 if [ $RETVAL != 0 ]; then
70 show "Checking %s configuration" "$svname"; fail
71 nls 'Configuration test failed. See details with %s "checkconfig"' $0
72 exit $RETVAL
73 fi
74 fi
75}
76
77start() {
78 # Check if the service is already running?
79 if [ ! -f $lockfile ]; then
80 checkconfig
81 msg_starting "$svname"
82 daemon $nginx -c $NGINX_CONF_FILE
83 RETVAL=$?
84 [ $RETVAL -eq 0 ] && touch $lockfile
85 else
86 msg_already_running "$svname"
87 fi
88}
89
90stop() {
91 local oldbin_pidfile="${pidfile}.oldbin"
92
93 # Stop daemons.
94 if [ -f $lockfile ]; then
95 if [ -f $oldbin_pidfile ] && [ -f $pidfile ]; then
96 msg_stopping "$svname (old process)"
97 killproc -p $oldbin_pidfile $prog -TERM
98 fi
99 msg_stopping "$svname"
100 killproc -p $pidfile $prog
101 RETVAL=$?
102 rm -f $lockfile $pidfile >/dev/null 2>&1
103 else
104 msg_not_running "$svname"
105 fi
106}
107
108reload() {
109 if [ -f $lockfile ]; then
110 checkconfig
111 msg_reloading "$svname"
112 killproc -p $pidfile $prog -HUP
113 RETVAL=$?
114 else
115 msg_not_running "$svname"
116 RETVAL=7
117 fi
118}
119
120condrestart() {
121 if [ ! -f $lockfile ]; then
122 msg_not_running "$svname"
123 RETVAL=$1
124 return
125 fi
126
127 checkconfig
128 stop
129 start
130}
131
132# Upgrade the binary with no downtime.
133# http://nginx.org/en/docs/control.html#upgrade
134# TODO: handle revert back on failed upgrade
135upgrade() {
136 local oldbin_pidfile="${pidfile}.oldbin" retry
137
138 checkconfig
139 show "Upgrading $svname"
140 killproc -p $pidfile $prog -USR2
141 RETVAL=$?
142
143 # wait for 3m
144 retry=720
145 while [ $retry -gt 0 ]; do
146 if [ -f $oldbin_pidfile ] && [ -f $pidfile ]; then
147 show "Upgrade: stopping old workers"
148 killproc -p $oldbin_pidfile $prog -WINCH
149 show "Upgrade: stopping old master process"
150 killproc -p $oldbin_pidfile $prog -QUIT
151 return 0
152 else
153 usleep 250000
154 retry=$(($retry -1))
155 fi
156 done
157
158 show "Upgrade: stopping old process"; fail
159 nls 'old process pid file was not found'
160 return 1
161}
162
163# Tell nginx to reopen logs
164# http://nginx.org/en/docs/control.html#logs
165reopen_logs() {
166 local oldbin_pidfile="${pidfile}.oldbin"
167
168 if [ -f $oldbin_pidfile ]; then
169 show "Reopening $svname (oldbin) logs"
170 killproc -p $oldbin_pidfile $prog -USR1
171 fi
172
173 show "Reopening $svname logs"
174 killproc -p $pidfile $prog -USR1
175}
176
177RETVAL=0
178# See how we were called.
179case "$1" in
180 start)
181 start
182 ;;
183 stop)
184 stop
185 ;;
186 restart)
187 checkconfig
188 stop
189 start
190 ;;
191 try-restart)
192 condrestart 0
193 ;;
194 reload|graceful)
195 reload
196 ;;
197 force-reload|upgrade)
198 upgrade
199 ;;
200 reopen-logs)
201 reopen_logs
202 ;;
203 checkconfig|configtest)
204 checkconfig 1
205 ;;
206 status)
207 status --pidfile $pidfile $prog
208 RETVAL=$?
209 ;;
210 *)
211 msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|graceful|reopen-logs|checkconfig|status}"
212 exit 3
213 ;;
214esac
215
216exit $RETVAL
This page took 0.037539 seconds and 4 git commands to generate.