次のようにproject/Build.scala を編集する。
object ApplicationBuild extends Build {
// ...
val appDependencies = Seq(
"commons-daemon" % "commons-daemon" % "1.0.10"
)
// ...
}
Eclipseの人は
$ play eclipsify
IntelliJの人は
$ play idea
その他の人は
$ play compile
とかでいいと思う。
次のクラスをplay new で生成したプロジェクト内に用意します。
package daemon
import org.apache.commons.daemon.Daemon
import org.apache.commons.daemon.DaemonContext
import play.core.server.NettyServer
import play.core.StaticApplication
import java.io.File
class Application extends Daemon {
var nettyServer: NettyServer = _
var applicationPath: File = _
override def init(dc: DaemonContext) {
// DaemonContextのargumentsからパラメータを受け取ればよい。commons-cliを使ってもよいね。
applicationPath = new File(dc.getArguments()(0))
}
override def start {
// NettyServerに渡しているパラメータはもっとかっこ良くできるけど、とりあえず版
nettyServer = new NettyServer(
new StaticApplication(applicationPath),
Option(System.getProperty("http.port")).map(Integer.parseInt(_)).getOrElse(9000),
Option(System.getProperty("http.address")).getOrElse("0.0.0.0"))
}
override def stop {
if (nettyServer != null) nettyServer.stop()
}
override def destroy {
nettyServer = null
}
}
$ play dist
$ cd dist
dist$ unzip app-1.0-SNAPSHOT.zip
dist$ cd app-1.0-SNAPHOST
jsvcは次のURLのcommons-daemon-1.0.10-native-src.tar.gzです。 http://commons.apache.org/daemon/download_daemon.cgi
ビルド方法は次のとおり。jsvcができるのでapp-1.0-SNAPHOSTにコピー。
$ support/buildconf.sh
$ ./configure
$ make
詳しくはここ。http://commons.apache.org/daemon/jsvc.html
以下スクリプトをdaemon.shとしてjsvcを同じディレクトリに配置する。
#/bin/sh
CLASSPATH=.:./lib/*
PID_FILE=./pidfile
BACKUP_DIR=`pwd`
cd `dirname $0`
CUR_DIR=`pwd`
start()
{
./jsvc \
-home $JAVA_HOME \
-cp $CLASSPATH \
-pidfile $PID_FILE \
-Dlogback.configurationFile=./logback.xml \
-debug -verbose \
-outfile stdout.log \
-errfile '&1' \
daemon.Application $CUR_DIR
}
stop()
{
./jsvc \
-stop \
-pidfile $PID_FILE \
daemon.Application
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage $0 start/stop"
exit 1;;
esac
cd $BACKUP_DIR
以下のコマンドでデーモンを起動停止する。
$ sh daemon.sh start
$ sh daemon.sh stop
などは、2.9.0以降ならば
とかも