2012-03-19 8 views
9

私がプレイアプリケーションがあり、Debianの上で展開することを容易にするために、DebianでPlay 2.0アプリをデプロイするには?

  1. の方法は、ここでどのように、標準のinit.dスクリプトを使用して、コードのうち、主な問題は、デーモンを作成します。どのようなものがあり 正常にアプリケーションを停止するには?

  2. どのようにしてコードをコンパイルすることができますか?1つのファイルを複数のファイルやディレクトリ(Playアプリケーションを配備する標準的な方法)と比較して1つのファイルに簡単に維持できます。

答えて

9
  1. あなたは「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"を実行することです。たとえそれが単一のファイルとして配布されたとしても、効率のために単に実行時にファイルシステムに展開されることになります(単にwarファイルの処理方法)。

+0

FatJar年代は実行時に展開されていません。私はfatJarを構築するオプションを探していました。 – sheki

+1

このスクリプトは、ほとんどの場合動作しますが、 'kill 'が失敗する奇妙な時間に動作します。その後、悪い状態になる可能性があります。 PID、ファイルがなくなり、アプリケーションがまだ実行中です。 – sheki

0

私がプレイ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 
関連する問題