如何将Play Framework 2.0应用程序作为Windows服务运行?

时间:2012-08-25 08:38:45

标签: playframework windows-server-2008 playframework-2.0 windows-server-2008-r2

我有一个Play Framework 2.0应用程序,我想在Windows Server 2008 R2上部署(生产)。如何让它作为服务运行?

5 个答案:

答案 0 :(得分:42)

这在Windows 7上对我有用:

  1. 创建文件夹C:\ my_app
  2. 转到您的游戏!命令行中的app文件夹并键入

    play dist

  3. 将生成的“something-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. 终止您在6开始的 start.bat 脚本,然后在C:\ my_app \ yajsw \ bat launch

    runConsole.bat

    如果应用程序启动,请执行Ctrl c(并回答 y )以终止批处理文件并继续执行下一步。

  10. 安装服务启动(以管理员身份运行

    installService.bat

  11. 开始服务启动

    startService.bat

  12. 现在,您可以在Windows服务中看到“我的应用名称”服务。 要停止服务,您可以使用stopService.bat。要将其卸载uninstallService.bat

答案 1 :(得分:3)

您应该看一下这个问题:Run Java application as a service

您必须使用play dist命令,然后调整start脚本才能在Windows上运行。

答案 2 :(得分:1)

如果您在第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步之前,请确保终止第6步中启动的 start.bat 脚本。不这样做导致我在这里发布的悲痛:

How do I fix server Oops error when deploying Play Framework 2.0 application as a Windows service?

最后,确保在打开DOS命令窗口时以管理员身份运行。在我进行部署时,我无法在不作为管理员的情况下运行 installService.bat 脚本。

答案 3 :(得分:0)

我们在此处的其他答案中列出的start.bat方法遇到了困难。两个主要问题是当服务器决定在Patch Tuesday上重新启动时缺少引导,并且需要使用VBS和其他装饰来防止需要保持命令窗口打开以保持JVM活动。

我们已成功使用Commons Daemon在Windows上运行Play应用程序。

我们使用dist打包应用程序进行分发,然后使用Commons Daemon安装为Windows服务。

答案 4 :(得分:0)

在较新的播放版本中,您可以使用sbt-native-packager几乎自动准备安装程序和服务

http://www.scala-sbt.org/sbt-native-packager/formats/windows.html