Как развернуть приложение Play 2.0 в Debian? - PullRequest
9 голосов
/ 19 марта 2012

У меня есть приложение play, чтобы его было легко развернуть в Debian, Каковы пути к

  1. Создание демона из кода с помощью стандартного скрипта init.d, основная проблема здесь, как изящно остановить приложение?

  2. Как скомпилировать код в виде толстой фляги, легко поддерживать один файл по сравнению с несколькими файлами и каталогами (стандартный способ развертывания приложения Play).

Ответы [ 2 ]

9 голосов
/ 24 марта 2012
  1. при условии, что вы используете пакет "play dist", вы можете создать простой сценарий init.d вокруг него.Примерно так:

/ 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.У них на самом деле нет ни одного файлового дистрибутива проектов.Лучшее, что вы можете сделать, это запустить "play dist" для создания распространяемого пакета.Даже если бы он был распространен в виде одного файла, он, вероятно, был бы извлечен в файловую систему во время выполнения только для эффективности (просто как обрабатываются военные файлы).

0 голосов
/ 30 апреля 2014

Я подготовил новую версию скрипта, совместимого с пакетами play 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
...