所以,我正在尝试部署我非常简单的Play Framework 2.1.1应用程序,但每当我通过端口命令行传递标记并应用数据库演变时,它们都会被忽略。
例如:
sudo play start -Dhttp.port = 80 -DapplyEvolutions.default = true
使用此命令,服务器将无法启动。 port和applyEvolutions = true标志都被完全忽略,并抛出此错误:
[warn] play - 您的生产数据库[默认]需要进化! [warn] play - 如果你愿意,可以使用-DapplyEvolutions.default = true运行 自动运行它们(小心) 哎呀,无法启动服务器。 @ 6elhl9mca:数据库'默认'需要进化!
我已经尝试了我能想到的一切无济于事。在我的本地机器上使用Play Run工作正常,没有问题。服务器正在运行Ubuntu 12.04。所有正确的驱动程序和连接字符串都存在并经过测试,数据库正在运行,除了Play Framework之外,一切正常运行。
答案 0 :(得分:10)
无论
play "start -Dhttp.port=80 -DapplyEvolutions.default=true"
或
play dist
然后,解压缩并运行生成的启动脚本,
./start -Dhttp.port=80 -DapplyEvolutions.default=true
会奏效。
答案 1 :(得分:6)
好的,所以我没有真正找到解决方案,但我找到了解决方法。这不是Play Framework 2.x文档中的任何地方(还是),所以我想我会把它放在这里以防其他人被卡住:
将applyEvolutions.default=true
置于application.conf
DOES 工作,并自动应用数据库演变。命令行参数-DapplyEvolutions.default=true
不会工作,因未知原因而被忽略。
将http.port=80
置于application.conf
不会工作。命令行参数-Dhttp.port=80
也不会用于设置要运行的端口号。
因此,要设置端口号,请改用此命令:
play "start 80"
或play "run 80"
(完全按照所示使用双引号)。
出于某种原因,当双引号中的port命令与上面完全相同时,正确设置要运行的端口号。
这在任何地方的框架文档中都找不到。我创建了另一个拉取请求来添加它,但我为此框架解决的最后一个问题(数据库加密)被拒绝为仅限于“有限的利基用例”,因此文档更新被拒绝。无论如何,我仍然可以尝试。
希望这有助于某人。