hot-swap This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters Show hidden characters #! /bin/bash # This script assumes you have an app running on 2 ports 4040 and 4041 # and that you can restart your app with a single command APP_RESTART_COMMAND= " /your/app/control restart " # Find out if the app is running function app_up { port= 1 # Give the app a minute to boot for i in {1..60} do # Use the app health check url curl -fsI 127.0.0.1: port /okcomputer status= ?iftest"? if test " status " ! = " 0 " then sleep 1 else break fi done return status } # Uncomment any failed attempts at a hot-swap sudo sed -i -r ' s/#+(server 127.0.0.1)/server 127.0.0.1/g ' /etc/nginx/nginx.conf sudo sed -i -r ' s/(server 127.0.0.1:4040)/#&/g ' /etc/nginx/nginx.conf sudo /etc/init.d/nginx reload # Restart the process and let it spin back up APP_RESTART_COMMAND 4040 # If the app fails to boot exit this script non-zero app_up 4040 status= ?iftest"? if test " status " ! = " 0 " then exit 1 fi sudo sed -i -r ' s/#(server 127.0.0.1:4040)/server 127.0.0.1:4040/g ' /etc/nginx/nginx.conf sudo /etc/init.d/nginx reload sudo sed -i -r ' s/(server 127.0.0.1:4041)/#&/g ' /etc/nginx/nginx.conf sudo /etc/init.d/nginx reload # Restart the process and let it spin back up APP_RESTART_COMMAND 4041 # If the app fails to boot exit this script non-zero app_up 4041 status= ? if test " $status " ! = " 0 " then exit 1 fi sudo sed -i -r ' s/#(server 127.0.0.1:4041)/server 127.0.0.1:4041/g ' /etc/nginx/nginx.conf sudo /etc/init.d/nginx reload