Recently I had to create a upstart script for a Play application and this was the result of that. I put it here so I don’t have to start from scratch next time 🙂
######################################################################################################## # # Upstart Script # # Upstart script for a play application. Put this into a file like /etc/init/myapp.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: # sudo start myapp # sudo stop myapp # sudo restart myapp # sudo status myapp # ######################################################################################################### description "Upstart script for MyApp" author "Niklas Ottosson" version "1.0" # Set environment variables env HOME=/my/app/dir/ env LANG=en_US.UTF-8 # Start and stop runlevels start on runlevel [2345] stop on runlevel [06] # Respawn parameters with limit: dies 3 times within 60 seconds respawn respawn limit 3 60 # Change directory to current version of Tankmin chdir /my/app/dir/ # Delete any stray PIDs pre-start script rm -f ${HOME}/RUNNING_PID end script # Upstart logging (/var/log/upstart/myapp.log) console none # TEST ENVIRONMENT (arguments here are what I'm using for this particular app - you should use what works best for your app) exec bin/myapp -J-Xms256M -J-Xmx768m -J-server -Dhttp.port=80 -Dconfig.file=conf/application.conf -Dlogger.file=conf/application-logger_PROD.xml
Tested in a production environment on Ubuntu 14.04 and Play Framework 2.3