【问题标题】:Bad Bind for Sinatra App on HerokuHeroku 上 Sinatra 应用程序的错误绑定
【发布时间】:2013-01-04 13:00:02
【问题描述】:

我的目标是查看在将小型 Sinatra 应用程序部署到 Heroku 并诊断出现端口错误的原因方面是否遗漏了一些明显的东西。

我正在向 Heroku 部署一个相当简单的应用程序。应用代码在这里:

https://github.com/jnyman/symbiont-app

应用程序本身是:

http://symbiont-app.herokuapp.com/

这是一个非常简单的测试应用程序。但是,当我部署到 Heroku 时,出现应用程序错误。日志中报告的错误是:

    Error R11 (Bad bind) -> Process bound to port 3000, should be 49668 (see environment variable PORT)
    heroku[web.1]: Process exited with status 137
    heroku[web.1]: State changed from starting to crashed

这是我的 Procfile 中的内容:

    web: bundle exec rackup config.ru -p $PORT

根据我的调查,我的理解是没有“-p $PORT”是我看到的错误的最可能原因。但我显然有这条线。此外,当我运行时,在本地环境中一切正常:

    bundle exec rackup config.ru

我可以毫无问题地测试我的应用程序。我使用时也是如此:

    foreman start

同样,应用程序运行良好。我使用标准命令部署到 heroku:

    git push heroku master

在此过程中没有错误。更新的最后部分是:

    -----> Discovering process types
       Procfile declares types     -> web
       Default types for Ruby/Rack -> console, rake
    -----> Compiled slug size: 15.7MB
    -----> Launching... done, v12
       http://symbiont-app.herokuapp.com deployed to Heroku

所以在本地工作;仅在部署到 Heroku 时出现错误。唯一的错误似乎与端口有关。我找不到很多信息可以帮助我弄清楚如何诊断我所看到的。我觉得我可能在这个端口问题上遗漏了一些明显的东西,但我不知道那是什么。

任何帮助将不胜感激。

【问题讨论】:

  • 我不知道这样对我自己的问题添加评论是否合适,但我确实注意到了一些事情。在查看 Heroku 中的日志时,该端口似乎一直在尝试使用 3000。我在整个应用程序中进行了搜索,但我根本没有指定该数字。

标签: heroku sinatra


【解决方案1】:

我确实得到了某种答案。本质上,它归结为“有时”在部署到 Heroku 时,您可能会遇到这个“端口冲突”问题,除了从 Heroku 删除您的应用程序,重新创建应用程序,然后重新部署。

只是为了提供一些上下文,对于上述问题,我什么也做不了。所以我尝试了核选项——我删除了几乎所有的文件,除了一个静态 HTML 文件和一个简单的路由。即使重新部署,我的应用程序仍然会发生端口冲突。

所以我删除了我的 Heroku 应用程序,重新创建了它,然后重新发布了我的完整版本:果然,一切正常。我想答案不多,但我无法与证据争论。

【讨论】:

    猜你喜欢
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    相关资源
    最近更新 更多