Play Framework 2.1.1 部署问题

Posted

技术标签:

【中文标题】Play Framework 2.1.1 部署问题【英文标题】:Play Framework 2.1.1 Deployment Issues 【发布时间】:2013-06-24 20:48:10 【问题描述】:

所以,我正在尝试部署我非常简单的 Play Framework 2.1.1 应用程序,但是每当我通过命令行传递标志以进行端口并应用数据库演变时,它们都会被忽略。

例如:

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

使用此命令,服务器将不会启动。 port 和 applyEvolutions=true 标志都被完全忽略并抛出此错误:

[warn] play - 您的生产数据库 [default] 需要改进! [warn] play - 如果你想运行 -DapplyEvolutions.default=true 自动运行它们(小心) 糟糕,无法启动服务器。 @6elhl9mca:数据库“默认”需要改进!

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

【问题讨论】:

更新:我可以将 applyEvolutions.default=true “硬编码”到 application.conf 中,这很有效,但设置 http.port 并不能以同样的方式工作。设置 HTTP 端口有什么技巧吗? 【参考方案1】:

要么

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

play dist

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

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

会起作用的。

【讨论】:

这太好了,谢谢。我最大的问题是文档中很少有这种详细程度。不过谢谢。【参考方案2】:

好的,所以我并没有真正找到解决方案,但我找到了解决方法。这在 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"(使用双引号,如图所示)。

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

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

希望这对某人有所帮助。

【讨论】:

这些命令确实有效,但您必须将它们放在引号中。例如:播放“run 8080”查看 James 的答案。 是的,我现在明白了。问题是,文档在任何地方都没有说,实际上给出了相反的例子。 它假定您使用的是游戏控制台,在这种情况下,引号不是必需的。如果看起来不正确,您可以随时 let them know ;) 我有,我会继续。谢谢你 - 我不知道文档中的那个假设。

以上是关于Play Framework 2.1.1 部署问题的主要内容,如果未能解决你的问题,请参考以下文章

heroku 部署与 play framework 1.2.4 和自己的安全模块

Play Framework 2.4.x 自定义部署脚本

如何使用 Jenkins 在本地自动部署 Play Framework (2.4) 应用程序?

如何在 Play Framework 2 应用程序的生产模式下进行热重新部署?

使用 Ansible playbook 在 AWS (Amazon) ec2 中部署 Play Framework 应用程序

在 Heroku 上的 Play Framework 1.2 上部署 Java 应用程序,我如何确保它可以处理更高的负载?