public
Last active

Upstart script for Play Framework 2.0

  • Download Gist
play.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
# Upstart script for a play application that binds to an unprivileged user.
# put this into a file like /etc/init/play.conf
#
# This could be the foundation for pushing play apps to the server using something like git-deploy
# By calling service play stop in the restart command and play-start in the restart command.
#
# Usage:
# start play
# stop play
# restart play
#
# WARNING: This is still beta, I have not tested the respawning functionality, but it should work.
#
# http://leon.radley.se
 
description "PlayFramework 2"
author "Leon Radley <leon@radley.se>"
version "1.0"
 
env USER=myuser
env GROUP=www-data
env HOME=/home/myuser/app
env PORT=9000
env ADDRESS=127.0.0.1
env CONFIG=production.conf
env SBTMEM=256
env EXTRA="-Xms128M -Xmx512m -server"
 
start on runlevel [2345]
stop on runlevel [06]
 
respawn
respawn limit 10 5
umask 022
expect daemon
 
# If you want the upstart script to build play with sbt
pre-start script
chdir $HOME
sbt clean compile stage -mem $SBTMEM
end script
 
exec start-stop-daemon --pidfile ${HOME}/RUNNING_PID --chuid $USER:$GROUP --exec ${HOME}/target/start --background --start -- -Dconfig.resource=$CONFIG -Dhttp.port=$PORT -Dhttp.address=$ADDRESS $EXTRA

Work as expected, thanks.

Won't work for Play 2.2 :-(

@ejain Could you explain why Play 2.2 won't work?

play clean stage has stopped generated a script in ${HOME}/target/start . Now it generates target/universal/stage/bin/$APP

You can read in the migration notes that start has changed

http://www.playframework.com/documentation/2.2.0/Migration22

I cannot fork this gist :(. That's why I will make my modifications as comments.

You should pass the JVM params like this:

env EXTRA="-J-Xms128M -J-Xmx512m -J-server"

specify the APP variable
env APP=my_app_name

And the exec line
exec start-stop-daemon --pidfile ${HOME}/RUNNING_PID --chuid $USER:$GROUP --exec ${HOME}/target/universal/stage/bin/${APP} --background --start -- -Dconfig.resource=$CONFIG -Dhttp.port=$PORT -Dhttp.address=$ADDRESS $EXTRA

Love it, this script it awesome. Thank you.

I tried to adapt this script for play 2.2.1, and I'll I'm getting is a hang,
i.e. "service play start " and "service play stop" both hang ... on ubuntu 12.04 ...

`env HOME=/play
env PORT=9000
env ADDRESS=127.0.0.1
env CONFIG=/play/application.conf

start on runlevel [2345]
stop on runlevel [06]

respawn
respawn limit 10 5
umask 022
expect daemon
#expect fork

exec start-stop-daemon --pidfile ${HOME}/cogo-1.0/RUNNING_PID --exec ${HOME}/corgol-1.0/bin/corgol -- -mem 256 -Dconfig.file=$CONFIG -Dhttp.port=$PORT
`

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.