Skip to content

Instantly share code, notes, and snippets.

@rodrigopinto
Forked from alobato/unicorn_init.sh
Created May 5, 2014 20:59
Show Gist options
  • Save rodrigopinto/5fabfe04b1b8766fc46c to your computer and use it in GitHub Desktop.
Save rodrigopinto/5fabfe04b1b8766fc46c to your computer and use it in GitHub Desktop.

Revisions

  1. @alobato alobato revised this gist Apr 2, 2013. 1 changed file with 10 additions and 1 deletion.
    11 changes: 10 additions & 1 deletion unicorn_init.sh
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,13 @@
    #!/bin/bash
    #!/bin/sh
    ### BEGIN INIT INFO
    # Provides: unicorn
    # Required-Start: $remote_fs $syslog
    # Required-Stop: $remote_fs $syslog
    # Default-Start: 2 3 4 5
    # Default-Stop: 0 1 6
    # Short-Description: Manage unicorn server
    # Description: Start, stop, restart unicorn server for a specific application.
    ### END INIT INFO

    set -e

  2. @alobato alobato revised this gist Mar 31, 2013. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion unicorn_init.sh
    Original file line number Diff line number Diff line change
    @@ -9,7 +9,7 @@ TIMEOUT=${TIMEOUT-60}
    HOME_PATH=/home/$AS_USER
    APP_ROOT=$HOME_PATH/apps/$APP_NAME/current
    PID=$APP_ROOT/tmp/pids/unicorn.pid
    CMD="cd $APP_ROOT; bundle exec unicorn -D -c $HOME_PATH/.unicorn/$APP_NAME/conf.rb -E production"
    CMD="cd $APP_ROOT; bundle exec unicorn -D -c $HOME_PATH/.unicorn/$APP_NAME/config.rb -E production"

    set -u

  3. @alobato alobato revised this gist Mar 11, 2013. 1 changed file with 0 additions and 4 deletions.
    4 changes: 0 additions & 4 deletions unicorn_init.sh
    Original file line number Diff line number Diff line change
    @@ -1,9 +1,5 @@
    #!/bin/bash

    # sudo wget -O /etc/init.d/unicorn_APPNAME http://RAW_GIST_URL
    # sudo nano /etc/init.d/unicorn_APPNAME # change appname
    # sudo chmod +x /etc/init.d/unicorn_APPNAME

    set -e

    # Feel free to change any of the following variables for your app:
  4. @alobato alobato revised this gist Mar 11, 2013. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion unicorn_init.sh
    Original file line number Diff line number Diff line change
    @@ -13,7 +13,7 @@ TIMEOUT=${TIMEOUT-60}
    HOME_PATH=/home/$AS_USER
    APP_ROOT=$HOME_PATH/apps/$APP_NAME/current
    PID=$APP_ROOT/tmp/pids/unicorn.pid
    CMD="cd $APP_ROOT; bundle exec unicorn -D -c $HOME_PATH/.unicorn/$APP_NAME.rb -E production"
    CMD="cd $APP_ROOT; bundle exec unicorn -D -c $HOME_PATH/.unicorn/$APP_NAME/conf.rb -E production"

    set -u

  5. @alobato alobato revised this gist Mar 10, 2013. 1 changed file with 3 additions and 2 deletions.
    5 changes: 3 additions & 2 deletions unicorn_init.sh
    Original file line number Diff line number Diff line change
    @@ -1,12 +1,13 @@
    #!/bin/bash

    # sudo nano /etc/init.d/unicorn_APPNAME
    # sudo wget -O /etc/init.d/unicorn_APPNAME http://RAW_GIST_URL
    # sudo nano /etc/init.d/unicorn_APPNAME # change appname
    # sudo chmod +x /etc/init.d/unicorn_APPNAME

    set -e

    # Feel free to change any of the following variables for your app:
    APP_NAME=store
    APP_NAME=appname
    AS_USER=deployer
    TIMEOUT=${TIMEOUT-60}
    HOME_PATH=/home/$AS_USER
  6. @alobato alobato revised this gist Mar 10, 2013. 1 changed file with 1 addition and 3 deletions.
    4 changes: 1 addition & 3 deletions unicorn_init.sh
    Original file line number Diff line number Diff line change
    @@ -7,15 +7,13 @@ set -e

    # Feel free to change any of the following variables for your app:
    APP_NAME=store

    AS_USER=deployer

    TIMEOUT=${TIMEOUT-60}
    HOME_PATH=/home/$AS_USER

    APP_ROOT=$HOME_PATH/apps/$APP_NAME/current
    PID=$APP_ROOT/tmp/pids/unicorn.pid
    CMD="cd $APP_ROOT; bundle exec unicorn -D -c $HOME_PATH/.unicorn/$APP_NAME.rb -E production"

    set -u

    OLD_PIN="$PID.oldbin"
  7. @alobato alobato created this gist Mar 10, 2013.
    84 changes: 84 additions & 0 deletions unicorn_init.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,84 @@
    #!/bin/bash

    # sudo nano /etc/init.d/unicorn_APPNAME
    # sudo chmod +x /etc/init.d/unicorn_APPNAME

    set -e

    # Feel free to change any of the following variables for your app:
    APP_NAME=store

    AS_USER=deployer

    TIMEOUT=${TIMEOUT-60}
    HOME_PATH=/home/$AS_USER

    APP_ROOT=$HOME_PATH/apps/$APP_NAME/current
    PID=$APP_ROOT/tmp/pids/unicorn.pid
    CMD="cd $APP_ROOT; bundle exec unicorn -D -c $HOME_PATH/.unicorn/$APP_NAME.rb -E production"
    set -u

    OLD_PIN="$PID.oldbin"

    sig () {
    test -s "$PID" && kill -$1 `cat $PID`
    }

    oldsig () {
    test -s $OLD_PIN && kill -$1 `cat $OLD_PIN`
    }

    run () {
    if [ "$(id -un)" = "$AS_USER" ]; then
    eval $1
    else
    su -c "$1" - $AS_USER
    fi
    }

    case "$1" in
    start)
    sig 0 && echo >&2 "Already running" && exit 0
    run "$CMD"
    ;;
    stop)
    sig QUIT && exit 0
    echo >&2 "Not running"
    ;;
    force-stop)
    sig TERM && exit 0
    echo >&2 "Not running"
    ;;
    restart|reload)
    sig HUP && echo reloaded OK && exit 0
    echo >&2 "Couldn't reload, starting '$CMD' instead"
    run "$CMD"
    ;;
    upgrade)
    if sig USR2 && sleep 2 && sig 0 && oldsig QUIT
    then
    n=$TIMEOUT
    while test -s $OLD_PIN && test $n -ge 0
    do
    printf '.' && sleep 1 && n=$(( $n - 1 ))
    done
    echo

    if test $n -lt 0 && test -s $OLD_PIN
    then
    echo >&2 "$OLD_PIN still exists after $TIMEOUT seconds"
    exit 1
    fi
    exit 0
    fi
    echo >&2 "Couldn't upgrade, starting '$CMD' instead"
    run "$CMD"
    ;;
    reopen-logs)
    sig USR1
    ;;
    *)
    echo >&2 "Usage: $0 <start|stop|restart|upgrade|force-stop|reopen-logs>"
    exit 1
    ;;
    esac