2012-03-19 21 views
9

Mam aplikację Play, aby łatwo wdrożyć na Debianie, Jakie są sposobyJak wdrożyć aplikację Play 2.0 na Debianie?

  1. Utwórz demona z kodem, za pomocą standardowego skryptu init.d, głównym problemem tutaj jak by z wdziękiem zatrzymać aplikację?

  2. W jaki sposób mogę skompilować kod jako słoik tłuszczu, łatwe do utrzymania 1 pojedynczy plik w porównaniu do wielu plików i katalogów (standardowy sposób wdrażania aplikacji Play).

Odpowiedz

9
  1. zakładając używasz pakietu „play dist”, można stworzyć prosty skrypt init.d wokół niego. Coś jak:

/etc/init.d/play.myplayapp

#! /bin/sh 

    ### BEGIN INIT INFO 
    # Provides:   play 
    # Required-Start: $all 
    # Required-Stop:  $all 
    # Default-Start:  2 3 4 5 
    # Default-Stop:  0 1 6 
    # Short-Description: 
    # Description: 
    ### END INIT INFO 

    APP="myplayapp" 
    APP_PATH="/opt/play/$APP" 

    start() { 
     $APP_PATH/start & 
    } 

    stop() { 
     kill `cat $APP_PATH/RUNNING_PID` 
    } 

    case "$1" in 
     start) 
     echo "Starting $APP" 
     start 
     echo "$APP started." 
     ;; 
     stop) 
     echo "Stopping $APP" 
     stop 
     echo "$APP stopped." 
     ;; 
     restart) 
     echo "Restarting $APP." 
     stop 
     sleep 2 
     start 
     echo "$APP restarted." 
     ;; 
     *) 
     N=/etc/init.d/play.$APP 
     echo "Usage: $N {start|stop|restart}" >&2 
     exit 1 
     ;; 
    esac 

    exit 0 

2. Oni naprawdę nie mają jeden dystrybucji plików projektów. Najlepsze, co możesz zrobić, to uruchomić "play dist", aby wygenerować pakiet dystrybucyjny. Nawet jeśli byłby rozprowadzany jako pojedynczy plik, prawdopodobnie zostałby wyodrębniony do systemu plików w czasie wykonywania tylko ze względu na wydajność (tak jak obsługiwane są pliki wojny).

+0

FatJar nie są rozszerzane przy starcie. Szukałem opcji zbudowania fatJar. – sheki

+1

Ten skrypt działałby przez większość czasu, ale w nieparzystym czasie, kiedy 'kill' by się nie powiedzie. Wtedy może być w złym stanie. PID, plik zniknął, a aplikacja wciąż działa. – sheki

0

Przygotowałem nową wersję scenariusza zgodnego z pakietami zabaw 2.2.x:

https://github.com/mgosk/play-app-deamon

#! /bin/sh 

    ### BEGIN INIT INFO 
    # Provides:   play 
    # Required-Start: $all 
    # Required-Stop:  $all 
    # Default-Start:  2 3 4 5 
    # Default-Stop:  0 1 6 
    # Short-Description: 
    # Description: 
    ### END INIT INFO 

    # configurable variables 
    APP_NAME="myplayapp" 
    APP_DIR="/opt/myplayapp" 
    CONF="application.conf" 

    # private variables 
    APP_SCRIPT="$APP_DIR/bin/$APP_NAME" 
    PID_FILE="/var/run/$APP_NAME.pid" 
    CONF_FILE="$APP_DIR/conf/$CONF" 

    start() { 
     $APP_SCRIPT -Dpidfile.path=$PID_FILE -Dconfig.file=$CONF_FILE > /dev/null & 
    } 

    stop() { 
     kill `cat $PID_FILE` 
    } 

    case "$1" in 
     start) 
     echo "Starting $APP_NAME" 
     if [ -e "$PID_FILE" ] ; then 
       echo "$APP_NAME already running" 
       echo "Try restart option or delete pid file at $PID_FILE" 
     else 
       start 
       echo "$APP_NAME started" 
     fi 
     ;; 
     stop) 
     echo "Stopping $APP_NAME" 
     stop 
     echo "$APP_NAME stopped." 
     ;; 
     restart) 
     echo "Restarting $APP_NAME" 
     stop 
     sleep 2 
     start 
     echo "$APP_NAME restarted." 
     ;; 
     status) 
     if [ -e "$PID_FILE" ] ; then 
       echo "$APP_NAME is running (pid `cat $PID_FILE`)" 
     else 
       echo "$APP_NAME is not running" 
     fi 
     ;; 
     *) 
     N="/etc/init.d/$APP_NAME" 
     echo "Usage: $N {start|stop|restart|status}" >&2 
     exit 1 
     ;; 
    esac 

    exit 0 
Powiązane problemy