2013-01-04 21 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應用程序,重新創建了它,然後重新顯示了我的完整版本:果然,一切正常。我想,答案並不多,但我不能與證據爭論。

相關問題