【问题标题】:No web dyno for newly created heroku app新创建的heroku应用程序没有网络测功机
【发布时间】:2013-04-04 13:47:31
【问题描述】:

一段时间以来,我一直在本地使用 Struts2、Hibernate 和 tomcat 开发 Java maven Web 应用程序。我决定在 Heroku 上托管应用程序,所以我注册并创建了一个新应用程序。然后我使用 git 将我的应用程序推送到 heroku,但每当我访问 url 时,我都会得到:

 Application Error
 An error occurred in the application and your page could not be served. Please try again        in a few moments.

 If you are the application owner, check your logs for details.

当我转到我的应用程序的资源页面时,我意识到没有可用的测功机实例,所以我认为这是我的问题。我是否正确,如果是,我该如何创建一个新的并解决这个问题。

更新

我检查了日志,我得到了一个 H14 - 没有运行 Web 进程。这表明我的应用确实没有测功机。所以我尝试使用以下命令添加一个:

 heroku ps:scale web=1 --app appname

但我得到“缩放网络进程...失败,没有这种类型有网络”。我该如何解决这个问题?

【问题讨论】:

  • 您应该做的第一件事是检查详细日志(通过使用 heroku logs 命令)。它将为您提供有用的调试信息。
  • 您创建了Procfile 吗?它应该有一个指定的 Web 进程,如:web: bundle exec puma(来自 Rails 世界的示例)。

标签: java hibernate heroku struts2


【解决方案1】:

问题在于您的应用可能没有应用服务器(即它只是没有 Tomcat 的原始 WAR 文件)。要解决此问题,您有几个选择:

  • WAR Deployment:这是专门针对 WAR 文件的替代部署流程。您将 WAR 文件上传到 Heroku,Tomcat 与必要的 Procfile 一起为您捆绑在一起。您可以使用CLIEclipse 执行此操作。这是最简单的,但对高级自定义有一些限制。
  • Manually add Webapp Runner to your app。这需要更多的工作,因为您必须对 POM 进行更改并创建自己的 Procfile,但它允许进一步自定义,并允许您在本地运行 Webapp Runner 以获得更好的dev/prod parity
  • Manually add Jetty Runner to your app。与上面的想法相同,但使用 Jetty,我个人发现它更适合 Struts2 应用程序。 Here is an example 我有一个使用这种方法的 Struts2 应用程序。看看POMProcfile 看看它是如何完成的。

【讨论】:

  • WAR部署有什么限制?
  • 主要是 Procfile 不在你的直接控制之下,所以如果你需要工作进程或自定义的 web 进程,其他选项更好。尽管如此,advanced options 仍然允许您对提供的 Web 进程进行大量自定义。此外,WAR 文件上传有时会比增量 git 推送花费的时间更长。
  • 当你说 struts2 与 jetty runner 一起工作时,在什么方面?
  • 我只记得在我列出的示例应用程序中 Tomcat 存在一些上下文根问题,但它只适用于 Jetty。这可能是一个简单的配置问题,但我只记得 Jetty 开箱即用。
猜你喜欢
  • 2013-06-25
  • 2013-04-26
  • 2016-03-25
  • 2012-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-31
  • 2015-01-20
相关资源
最近更新 更多