Play Framework 2.1.1 部署问题

6
所以,我正在尝试部署我的非常简单的Play Framework 2.1.1应用程序,但无论何时通过命令行传递标志以应用端口和数据库演化,它们都被忽略。
例如:
sudo play start -Dhttp.port=80 -DapplyEvolutions.default=true 使用此命令,服务器将无法启动。端口和applyEvolutions=true标志都被完全忽略,并抛出以下错误:
[warn] play - 您的生产数据库[default]需要演化! [warn] play - 如果要自动运行,请使用-DapplyEvolutions.default=true(小心) Oops,无法启动服务器。 @6elhl9mca:数据库“default”需要演化!
我已经尝试了我所能想到的一切,但都没有成功。在我的本地机器上使用Play Run可以正常工作,没有问题。服务器正在运行Ubuntu 12.04。所有正确的驱动程序和连接字符串都存在并经过测试,数据库正在运行,除了Play Framework之外,一切都没有问题。

更新:我可以在application.conf中“硬编码”applyEvolutions.default=true,这样就可以工作了,但是以同样的方式设置http端口却不能起作用。有关设置HTTP端口的提示吗? - Michael Hawkins
2个回答

10

任一

play "start -Dhttp.port=80 -DapplyEvolutions.default=true"
或者。
play dist
然后,解压并运行生成的启动脚本,
./start -Dhttp.port=80 -DapplyEvolutions.default=true

会工作。


2
这太好了,谢谢。我最大的问题是文档中很少有这个细节级别的内容。不过还是谢谢。 - Michael Hawkins

6

好的,我没有真正为此找到解决方案,但我找到了一个解决方法。这在Play Framework 2.x文档中(尚)不存在,因此我认为我会将其放在这里,以防其他人遇到困难:

applyEvolutions.default=true放入application.conf有效,并将使数据库演变自动应用。命令行参数-DapplyEvolutions.default=true无效,原因未知。

http.port=80放入application.conf无效。命令行参数-Dhttp.port=80无法设置要运行的端口号。

因此,使用以下命令来设置端口号:

play "start 80"play "run 80"(完全按照所示使用双引号)。

由于某种原因,当上述端口命令完全按照上述方式用双引号编写时,可正确设置要运行的端口号。

这在框架文档中找不到。我可能会创建另一个拉取请求以添加它,但是我为此框架解决的最后一个问题(数据库加密)被贬低为仅是“有限的、利基用例”,因此文档更新被拒绝。我仍然可能会尝试。

希望这对某个人有所帮助。


这些命令确实有效,但你必须将它们放在引号中。例如:play "run 8080",请查看詹姆斯的答案。 - damian
是的,我现在明白了。问题是,文档中没有提到这一点,实际上还给出了相反的例子。 - Michael Hawkins
1
假设您正在使用Play控制台,那么引号是不必要的。如果有任何问题,您可以随时告诉他们。 ;) - damian
我已经这样做了,而且我会继续这样做。谢谢你告诉我 - 我之前并不知道文档中有这种假设。 - Michael Hawkins

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接