nginx (S50nginx): Fix stop, reload, restart. Add force-reload.
authorThomas Claveirole <thomas.claveirole@green-communications.fr>
Mon, 25 Sep 2017 13:20:29 +0000 (15:20 +0200)
committerArnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Tue, 26 Sep 2017 22:12:55 +0000 (00:12 +0200)
Fix package/nginx/S50nginx:

* On stop, use start-stop-daemon -R 1 to wait for the nginx processes
  to actually stop.  This fixes a race condition with restart, where
  nginx fails to restart because start is called too early
  w.r.t. stop.  (This only works with Debian's start-stop-daemon,
  however BusyBox's start-stop-daemon does not fail when given -R; it
  just ignores the argument silently).

* Implement reload with an actual reload instead of a restart.

* Add force-reload.

Signed-off-by: Thomas Claveirole <thomas.claveirole@green-communications.fr>
Reviewed-by: Samuel Martin <s.martin49@gmail.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
package/nginx/S50nginx

index b2f8b808550695d13976fb349d5aef7ce2f74c0e..a854c651d1a0d83cc3236c4dea25da88c6f3ca32 100755 (executable)
@@ -3,23 +3,31 @@
 # Start/stop nginx
 #
 
+NGINX=/usr/sbin/nginx
 PIDFILE=/var/run/nginx.pid
 
 case "$1" in
   start)
        echo "Starting nginx..."
        mkdir -p /var/log/nginx /var/tmp/nginx
-       start-stop-daemon -S -x /usr/sbin/nginx -p $PIDFILE
+       start-stop-daemon -S -x "$NGINX" -p "$PIDFILE"
        ;;
   stop)
-       printf "Stopping nginx..."
-       start-stop-daemon -K -o -p $PIDFILE
+       echo "Stopping nginx..."
+       # Use -R 1 to wait for nginx to actually stop.  Useful so
+       # restart has no race condition.  Note that BusyBox knows
+       # about -R but ignores it silently.
+       start-stop-daemon -K -x "$NGINX" -p "$PIDFILE" -R 1 -o
        ;;
-  restart|reload)
+  reload|force-reload)
+       echo "Reloading nginx configuration..."
+       "$NGINX" -s reload
+       ;;
+  restart)
        "$0" stop
        "$0" start
        ;;
   *)
-       echo "Usage: $0 {start|stop|restart}"
+       echo "Usage: $0 {start|stop|restart|reload|force-reload}"
        exit 1
 esac