Как запустить приложение Play Framework 2.0 в качестве службы Windows?

У меня есть приложение Play Framework 2.0, которое я хочу развернуть (производство) на Windows Server 2008 R2. Как мне заставить его работать как сервис?

5 ответов

Решение

Это работало для меня на Windows 7:

  1. Создать папку C:\my_app
  2. Перейти к вашей игре! папку приложения в командной строке и введите

    play dist

  3. Скопируйте сгенерированную папку нечто-SNAPSHOT в C:\my_app
  4. Загрузите YAJSW и распакуйте в C:\my_app
  5. В C:\my_app \ something-SNAPSHOT \ создайте новый файл start.bat и заполните его такой командой:

    java -cp "C:\my_app\something-SNAPSHOT\lib\*" play.core.server.NettyServer

  6. Сохраните его и запустите start.bat. Ваше игровое приложение должно запуститься и работать как обычно. Посмотрите на PID сервера. Вы будете использовать его на следующем шаге.

  7. Теперь с помощью командной строки перейдите в C:\my_app\yajsw\bat и введите

    genConfig.bat < PID from previous step >

  8. Вы создали файл C:\my_app\yajsw\conf\wrapper.conf. Отредактируйте этот файл и измените эти параметры следующим образом:

    wrapper.ntservice.name=My App Name
    wrapper.ntservice.displayname=My App Name


    Сохранить файл.

  9. Завершите скрипт start.bat, который вы запустили в 6., затем в C:\my_app\yajsw\bat launch

    runConsole.bat

    Если приложение запускается, сделайте Ctrl c (и ответьте y), чтобы завершить пакетный файл и перейти к следующему шагу.

  10. Чтобы установить сервис запуска (Запуск от имени администратора)

    installService.bat

  11. Чтобы запустить сервис

    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.. Не делать этого вызвало горе, которое я написал здесь:

Как исправить ошибку "упс сервера" при развертывании приложения Play Framework 2.0 в качестве службы Windows?

Наконец, убедитесь, что вы запускаете от имени администратора, когда открываете окно командной строки 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

Другие вопросы по тегам