public
Created

Post Installation script from debian that upgrades Nginx the proper way, i.e., without downtime

  • Download Gist
upgrade_nginx.sh
Shell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
#!/bin/sh
 
set -e
 
case "$1" in
configure)
if [ -z $2 ] && [ ! -e /etc/nginx/sites-enabled/default ] ;
then
ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
fi
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
 
if [ -x /etc/init.d/nginx ]
then
if [ -f /var/run/nginx.pid ] && pidof /usr/sbin/nginx >/dev/null
then
echo "Trying a soft restart"
NGX_PID=`cat /var/run/nginx.pid`
if kill -s USR2 $NGX_PID 2>/dev/null
then
echo "PID IS RIGHT"
while [ ! -f /var/run/nginx.pid.oldbin ]
do
echo "WAITING"
cnt=`expr $cnt + 1`
if [ $cnt -gt 10 ]
then
echo "Nginx 'soft' update failed, doing restart"
kill -s KILL $NGX_PID
invoke-rc.d nginx start
exit 0
fi
sleep 1
done
echo "QUIT"
NGX_OLD_PID=`cat /var/run/nginx.pid.oldbin`
kill -s QUIT $NGX_OLD_PID
fi
fi
fi
 
#DEBHELPER#
 
exit 0

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.