设置 Play 框架环境

Posted

技术标签:

【中文标题】设置 Play 框架环境【英文标题】:Set Play Framework Environment 【发布时间】:2015-11-23 16:03:40 【问题描述】:

我的项目部署有问题。到目前为止,我使用的是单个 playframework 应用程序,运行监听端口 80。 现在,我使用 nginx 作为代理在同一服务器 2 中发布了应用程序。 Nginx 监听 80 端口,应用运行在 9001 和 9002 端口。

一切正常,但应用程序在开发模式下而不是在生产模式下运行,页面 404 不起作用,并且在 html 页面中我看到如下代码错误:“Action not found For request 'GET /asd ’”。 我使用以下命令运行应用程序:

myapp -Dhttp.port=9001 -Dconfig.file=conf/application.conf -Dlogger.file=/mydir/conf/application-logger.xml -Dpidfile.path=/mydir/daasy.pid -server

我将 playframework 2.4.3 与 scala 2.11.7 一起使用

更新: 我创建了一个引导类:

class onStartClass @Inject() (val app: Application)

  println(app.mode)

app.mode 在 prod 中运行时返回“Prod”,使用端口 80 以及在端口 9001 中运行时。

但是,当在 9001 端口运行的应用程序无法在 404 页面运行时,网站会返回一个 playframework 错误页面。

【问题讨论】:

你如何打包/部署你的应用程序? @Jean 和 dist,然后我把 zip 放到服务器上,解压并启动。 您可以使用 curl 检查您的两个应用程序是否在没有代理的情况下工作。只需指定端口 9001 或 9002,例如curl http://youraddress.com:9001/asd. @Kris,是的,我可以,然后我做了一个测试。应用程序可以工作,但在开发模式下工作,我可以使用端口 9001 和 9002 访问。 @faster2b 抱歉,我无法理解。你说,你的 2 个应用在开发模式下运行良好,但在生产模式下却不行? 【参考方案1】:

据我了解,您观察到的是 Play 2.4 的正确行为

在开发模式下,404 由 devNotFound.scala.html 模板处理,并产生如下所示的错误:

在 prod 模式下,404 由 notFound.scala.html 模板处理,并产生如下所示的错误:

注意第一个错误如何列出所有现有路由,而第二个没有。

如果您想要再次呈现 404 NotFound 错误,您需要创建自己的错误处理程序,如 ScalaErrorHandling 中所述

【讨论】:

是的,我使用自定义代码,问题出在我的 ScalaErrorHandling 中。谢谢

以上是关于设置 Play 框架环境的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Play! 访问开发数据库!框架?

Play框架中是不是可以有多个消息文件

无法使用激活器加载本机库(Play 框架)

在 Play 框架中使用 @Before 进行 Selenium 测试

在 Android 模拟器设置中 - Google Play 服务版本无法解析

如何在 IDEA 控制台上显示 Play 框架“日志”