6

因此,我试图部署我非常简单的Play Framework 2.1.1应用程序,但每当我通过端口的命令行标志并应用数据库演变时,它们都将被忽略。Play Framework 2.1.1部署问题

例如:

sudo play start -Dhttp.port=80 -DapplyEvolutions.default=true

使用此命令后,服务器将无法启动。无论是港口和applyEvolutions = TRUE标志被完全忽略它抛出这个错误:

[warn] play - Your production database [default] needs evolutions! [warn] play - Run with -DapplyEvolutions.default=true if you want to run them automatically (be careful) Oops, cannot start the server. @6elhl9mca: Database 'default' needs evolution!

我用尽了一切我能想到的都无济于事。使用Play在本地机器上运行正常,没有问题。该服务器正在运行Ubuntu 12.04。所有正确的驱动程序和连接字符串都存在并经过测试,数据库正在运行,除了Play Framework以外,一切正常工作。

+0

更新:我可以将applyEvolutions.default = true“硬编码”到application.conf中,并且工作正常,但设置http.port不会以同样的方式工作。有关设置HTTP端口的任何提示? –

回答

6

好吧,所以我没有真正找到解决方案,但我找到了解决方法。这是不是在Google Play框架2.x的文件(还)在任何地方,所以我想我会把它放在这里,以防别人卡住:

applyEvolutions.default=trueapplication.confDOES工作,将使数据库演变自动适用。命令行参数-DapplyEvolutions.default=trueDOES NOT工作并且由于未知原因而被忽略。

http.port=80转换成application.conf不是工作。命令行参数-Dhttp.port=80不是工作设置端口号运行。

因此,要设置的端口号使用该命令来代替:

play "start 80"play "run 80"(确切地用双引号如图所示)。

由于某些原因,如果在双引号中完全按照上述方式写入端口命令,则要正确设置要运行的端口号。

这在框架文档中找不到任何地方。我会创建另一个拉取请求来添加它,但是我为这个框架(数据库加密)解决的最后一个问题被贬为“有限的,小众用例”,因此文档更新被拒绝。无论如何,我仍然可以尝试。

希望这可以帮助别人。

+0

这些命令可以工作,但必须将它们放在引号中。例如:玩“跑8080”看看詹姆斯的回答。 – kingdamian42

+0

是的,我现在看到了。问题是,文档没有在任何地方说过,实际上只是举例说明了相反情况。 –

+1

它假定您正在使用播放控制台,在这种情况下引号不是必需的。你可以随时[让他们知道](https://github.com/playframework/play20/issues?state=open)如果它似乎不正确;) – kingdamian42

10

要么

play "start -Dhttp.port=80 -DapplyEvolutions.default=true" 

play dist 

然后,解压并运行生成的启动脚本,

./start -Dhttp.port=80 -DapplyEvolutions.default=true 

会工作。

+2

这很好,谢谢。我最大的问题是这个级别的细节很少在文档中。谢谢你。 –