Как запустить приложение Play Framework 2.0 в качестве службы Windows?
У меня есть приложение Play Framework 2.0, которое я хочу развернуть (производство) на Windows Server 2008 R2. Как мне заставить его работать как сервис?
5 ответов
Это работало для меня на Windows 7:
- Создать папку C:\my_app
Перейти к вашей игре! папку приложения в командной строке и введите
play dist
- Скопируйте сгенерированную папку нечто-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, который вы запустили в 6., затем в C:\my_app\yajsw\bat launch
runConsole.bat
Если приложение запускается, сделайтеCtrl c
(и ответьте y), чтобы завершить пакетный файл и перейти к следующему шагу.Чтобы установить сервис запуска (Запуск от имени администратора)
installService.bat
Чтобы запустить сервис
startService.bat
Теперь вы можете увидеть свою службу "My App Name" в службах Windows. Чтобы остановить сервис, вы можете использовать stopService.bat
, Чтобы удалить его uninstallService.bat
,
Вы должны взглянуть на этот вопрос: запускать приложение Java как сервис
Вам придется использовать play dist
команда, а затем адаптировать start
скрипт для запуска на винде.
Если вы получили ошибку в шаге 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, который вы запустили на шаге 6.. Не делать этого вызвало горе, которое я написал здесь:
Наконец, убедитесь, что вы запускаете от имени администратора, когда открываете окно командной строки DOS. Я не мог запустить скрипт installService.bat, не будучи администратором, когда выполнял развертывание.
У нас были трудности с start.bat
методы, перечисленные в других ответах здесь. Двумя основными проблемами являются отсутствие начальной загрузки, когда сервер решает перезагрузить себя во вторник с исправлениями, и требование использовать VBS и другие элементы декорации для предотвращения необходимости держать окно командной строки открытым, чтобы поддерживать работу JVM.
Мы успешно использовали Commons Daemon для запуска приложений Play на Windows в производстве.
Мы используем dist
чтобы упаковать приложение для распространения, затем установить его как службу Windows с помощью демона Commons.
Для более новых версий игр вы можете использовать sbt-native-packager
которые готовят установщик и обслуживают практически автоматически
http://www.scala-sbt.org/sbt-native-packager/formats/windows.html