2012-03-19 30 views
9

Tôi đã ứng dụng chơi, để làm cho nó dễ dàng để triển khai trên Debian, cách đểLàm cách nào để triển khai ứng dụng Play 2.0 trên Debian?

  1. là gì Tạo một daemon ra của mã này, với một kịch bản init.d tiêu chuẩn, vấn đề chính ở đây như thế nào để dừng ứng dụng một cách duyên dáng?

  2. Làm cách nào để biên dịch mã dưới dạng bình chứa chất béo, dễ duy trì 1 tệp đơn so với nhiều tệp và thư mục (cách triển khai ứng dụng Play chuẩn).

Trả lời

9
  1. giả sử bạn đang sử dụng "chơi dist" gói, bạn có thể tạo ra một kịch bản init.d đơn giản xung quanh nó. Một cái gì đó như:

/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. Họ không thực sự có một phân phối tập tin duy nhất của dự án. Điều tốt nhất bạn có thể làm là chạy "play dist" để tạo ra một gói phân phối. Ngay cả khi nó được phân phối dưới dạng một tệp, nó có thể được trích xuất vào hệ thống tệp khi chạy chỉ để có hiệu quả (chỉ cách xử lý các tệp war).

+0

của FatJar không được mở rộng khi chạy. Tôi đang tìm kiếm một tùy chọn để xây dựng một fatJar. – sheki

+1

Tập lệnh này sẽ hoạt động hầu hết các lần, nhưng trong thời gian lẻ khi 'kill' sẽ thất bại. Có thể ở trạng thái xấu rồi. Tệp PID, tệp đã biến mất và ứng dụng vẫn đang chạy. – sheki

0

tôi đã chuẩn bị phiên bản mới của kịch bản tương thích với các gói chơi 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 
Các vấn đề liên quan