2013-01-04 23 views
0

我的目标是看看我是否错过了将一个小型Sinatra应用程序部署到Heroku并诊断出现端口错误的原因。Heroku上的Sinatra应用程序的不良绑定

我正在向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时只有一个错误。唯一的错误似乎是关于一个端口。我无法找到的很多信息可以帮助我弄清楚如何诊断我所看到的。我觉得我可能会在这个端口问题上漏掉一些明显的东西,但我不知道那是什么。

任何帮助,将不胜感激。

+0

我不知道是否适合给我这样的问题添加评论,但我确实注意到了一些问题。在回到Heroku中的日志中,似乎端口总是尝试使用3000.我在整个应用程序中搜索,并且没有任何地方可以指定该数字。 –

回答

0

我确实得到了一个这样的答案。从本质上来说,“有时”在部署到Heroku时会遇到这种“端口冲突”问题,您可以做的很少,除了从Heroku中删除应用程序,重新创建应用程序,然后重新部署。

只是为了给出一些上下文,以上面的问题,我可以没有任何工作。所以我尝试了核选项 - 除了静态HTML文件和简单路线外,我摆脱了所有文件。即使重新部署,我的应用程序仍然会造成端口冲突。

因此,我删除了我的Heroku应用程序,重新创建了它,然后重新显示了我的完整版本:果然,一切正常。我想,答案并不多,但我不能与证据争论。

相关问题