У меня есть приложение Play Framework 2.0, которое я хочу развернуть (создать) на Windows Server 2008 R2. Как заставить его работать как сервис?
Как запустить приложение Play Framework 2.0 в качестве службы Windows?
Ответ 1
Это работало для меня в Windows 7:
- Создать папку C:\my_app
-
Перейдите в свою игру! app в командной строке и введите
play dist
- Скопировать сгенерированную папку "something-SNAPSHOT" в папку C:\my_app
- Загрузите YAJSW и извлеките файл C:\my_app
-
В C:\my_app\something-SNAPSHOT\создайте новый файл start.bat и заполните его командой следующим образом:
java -cp "C:\my_app\something-SNAPSHOT\lib\*" play.core.server.NettyServer
-
Сохраните его и запустите start.bat. Ваше игровое приложение должно начинаться и работать как обычно. Посмотрите на PID сервера. Вы будете использовать его на следующем шаге.
-
Теперь с помощью командной строки перейдите в C:\my_app\yajsw\bat и введите
genConfig.bat < PID from previous step >
-
Вы создали C:\my_app\yajsw\conf\wrapper.conf. Отредактируйте этот файл и измените эти параметры следующим образом:
wrapper.ntservice.name=My App Name
wrapper.ntservice.displayname=My App Name
Сохранить файл. -
Завершите start.bat script, который вы начали в 6. затем, в C:\my_app\yajsw\bat запуск
runConsole.bat
Если приложение запустится, выполнитеCtrl c
(и ответьте y), чтобы завершить командный файл и перейти к следующему шагу. -
Чтобы установить запуск службы (запустите от имени администратора)
installService.bat
-
Чтобы запустить запуск службы
startService.bat
Теперь вы можете увидеть свою службу "Имя моего приложения" в службах Windows.
Для остановки службы вы можете использовать stopService.bat
. Чтобы удалить его uninstallService.bat
.
Ответ 2
Вы должны взглянуть на этот вопрос: Запустить приложение Java как службу
Вам нужно будет использовать команду play dist
, а затем адаптировать start
script для запуска в Windows.
Ответ 3
Если вы получили сообщение об ошибке в шаге 5., это выглядит примерно так:
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!
Затем выполните следующую команду:
java -cp "C:\my_app\something-SNAPSHOT\lib\*" -DapplyEvolutions.default=true play.core.server.NettyServer
Два дополнительных элемента в процессе, описанном Михаилом, помогли мне:
Прежде всего, перед шагом 9. убедитесь, что вы завершаете start.bat script, который вы начали с шага 6 .. Не делая этого вызвало печаль, которую я опубликовал здесь:
Наконец, убедитесь, что вы Запуск от имени администратора, когда вы открываете окно командной строки DOS. Я не смог запустить installService.bat script, не будучи администратором, когда делал свое развертывание.
Ответ 4
У нас были трудности с методами start.bat
, перечисленными в других ответах здесь. Две основные проблемы: отсутствие загрузки, когда сервер решает перезагрузить себя в Patch Tuesday, а также требование использовать VBS и другое украшение, чтобы предотвратить необходимость открывать окно команд, чтобы сохранить JVM в живых.
У нас был успех с использованием Commons Daemon для запуска приложений Play для Windows на производстве.
Мы используем dist
для упаковки приложения для распространения, а затем для установки в качестве службы Windows с использованием Demon Commons.
Ответ 5
В более новых версиях игр вы можете использовать sbt-native-packager
, которые готовят установщик и службу почти автоматически
http://www.scala-sbt.org/sbt-native-packager/formats/windows.html