playframework - runprod - ¿Cómo ejecuto una aplicación Play Framework 2.0 como un servicio de Windows?
play http secret key (5)
Debería echar un vistazo a esta pregunta: ejecute la aplicación Java como un servicio
Tendrá que usar el comando play dist
y luego adaptar el script de start
para ejecutarse en Windows.
Tengo una aplicación Play Framework 2.0 que deseo implementar (producción) en Windows Server 2008 R2. ¿Cómo puedo hacer que funcione como un servicio?
Esto me funcionó en Windows 7:
- Crear carpeta C: / my_app
¡Ve a tu juego! carpeta de la aplicación en la línea de comandos y el tipo
play dist
- Copie la carpeta "something-SNAPSHOT" generada en C: / my_app
- Descargue YAJSW y extraiga a C: / my_app
En C: / my_app / something-SNAPSHOT / crea un nuevo archivo start.bat y llénalo con un comando como este:
java -cp "C:/my_app/something-SNAPSHOT/lib/*" play.core.server.NettyServer
Guárdalo y ejecuta start.bat. Tu aplicación de juego debe comenzar y funcionar como siempre. Echa un vistazo a PID del servidor. Lo usarás en el siguiente paso.
Ahora, usando el símbolo del sistema, vaya a C: / my_app / yajsw / bat y escriba
genConfig.bat < PID from previous step >
Generó C: / my_app / yajsw / conf / wrapper.conf. Edite este archivo y cambie estos parámetros de esta manera:
wrapper.ntservice.name=My App Name
wrapper.ntservice.displayname=My App Name
Guardar el archivo.Termine el script start.bat que inició en 6. luego, en C: / my_app / yajsw / bat launch
runConsole.bat
Si se inicia la aplicación, hagaCtrl c
(y responda y ) para terminar el archivo por lotes y continúe con el siguiente paso.Para instalar el servicio de inicio ( Ejecutar como administrador )
installService.bat
Para iniciar el lanzamiento del servicio
startService.bat
Ahora puede ver su servicio "Nombre de mi aplicación" en los servicios de Windows. Para detener el servicio puede usar stopService.bat
. Para desinstalarlo uninstallService.bat
.
Para las versiones de juegos más nuevas, puede usar sbt-native-packager
que prepara el instalador y el servicio casi automáticamente
http://www.scala-sbt.org/sbt-native-packager/formats/windows.html
Si obtienes un error en el paso 5, se ve algo como esto:
Play server process ID is 1132
[info] play - database [default] connected at jdbc:h2:file:db/h2/play
[warn] play - Your production database [default] needs evolutions!
... bunch of SQL statements in the console ...
[warn] play - Run with -DapplyEvolutions.default=true if you want to run them automatically (be careful)
Oops, cannot start the server.
@6gme0o9k5: Database ''default'' needs evolution!
A continuación, ejecute el comando como este en su lugar:
java -cp "C:/my_app/something-SNAPSHOT/lib/*" -DapplyEvolutions.default=true play.core.server.NettyServer
Dos artículos adicionales en el proceso que Mikhail describió me hicieron saltar:
Primero, antes del paso 9. , asegúrese de terminar la secuencia de comandos start.bat que inició en el paso 6 .. No hacerlo causó el dolor que publiqué aquí:
Por último, asegúrese de ejecutar como administrador cuando abra la ventana de comandos de DOS. No podía ejecutar el script installService.bat sin ser administrador cuando estaba haciendo mi despliegue.
Tuvimos dificultades con los métodos start.bat
enumerados en otras respuestas aquí. Dos problemas principales son la falta de arranque cuando el servidor decide reiniciarse en Patch Tuesday, y el requisito de usar VBS y otra decoración para evitar la necesidad de mantener abierta la ventana de comandos para mantener la JVM activa.
Hemos tenido éxito con el uso del Commons Daemon para ejecutar aplicaciones Play en Windows en producción.
Usamos dist
para empaquetar la aplicación para su distribución, luego la instalamos como un servicio de Windows con el Commons Daemon.