2012-01-01 18 views
0

これは私のHeroku/Clojure problem hereに続く質問です。そのスレッドで概説されているように、私はHerokuのマスターにアプリをプッシュすることができ、それはそれをデプロイします。Heroku/Clojure展開時のポートエラー

私のアプリのURLに移動しようとすると、以下のエラーが表示されます。これは奇妙なポートエラーですが、私はHerokuにClojureアプリケーションをデプロイするときに、その詳細を制御できないと思っていました。セットアップはかなり簡単だと思います。このエラーに対処するためにできることはありますか?

Procfile

 

    web: lein run -m http.handler 

http.handler

 

    ... 
    (def app  (handler/site main)) 

エラー

 

    2011-12-31T04:10:02+00:00 app[web.1]: Listening for transport dt_socket at address: 41208 
    2011-12-31T04:10:03+00:00 heroku[web.1]: Stopping process with SIGKILL 2011-12-31T04:10:03+00:00 heroku[web.1]: Error R11 (Bad bind) -> Process bound to port 41208, should be 55032 (see environment variable PORT) 
    2011-12-31T04:10:04+00:00 heroku[web.1]: State changed from starting to crashed 
    2011-12-31T04:10:05+00:00 heroku[web.1]: Process exited 
    2011-12-31T04:20:08+00:00 heroku[web.1]: State changed from crashed to created 2011-12-31T04:20:08+00:00 heroku[web.1]: State changed from created to starting 2011-12-31T04:20:12+00:00 heroku[web.1]: Starting process with command `lein run -m http.handler` 
    2011-12-31T04:20:16+00:00 app[web.1]: Listening for transport dt_socket at address: 49151 2011-12-31T04:20:16+00:00 heroku[web.1]: Error R11 (Bad bind) -> Process bound to port 49151, should be 39092 (see environment variable PORT) 
    2011-12-31T04:20:16+00:00 heroku[web.1]: Stopping process with SIGKILL 
    2011-12-31T04:20:17+00:00 heroku[web.1]: State changed from starting to crashed 
    2011-12-31T04:20:18+00:00 heroku[web.1]: Process exited 
    2011-12-31T04:31:13+00:00 heroku[web.1]: State changed from crashed to created 
    2011-12-31T04:31:13+00:00 heroku[web.1]: State changed from created to starting 
    2011-12-31T04:31:16+00:00 heroku[web.1]: Starting process with command `lein run -m http.handler` 
    2011-12-31T04:31:20+00:00 app[web.1]: Listening for transport dt_socket at address: 44321 
    2011-12-31T04:31:20+00:00 heroku[web.1]: Error R11 (Bad bind) -> Process bound to port 44321, should be 17211 (see environment variable PORT) 
    2011-12-31T04:31:20+00:00 heroku[web.1]: Stopping process with SIGKILL 
    2011-12-31T04:31:22+00:00 heroku[web.1]: State changed from starting to crashed 
    2011-12-31T04:31:22+00:00 heroku[web.1]: Process exited 
    2011-12-31T04:44:59+00:00 heroku[web.1]: State changed from crashed to created 
    2011-12-31T04:44:59+00:00 heroku[web.1]: State changed from created to starting 
    2011-12-31T04:45:02+00:00 heroku[web.1]: Starting process with command `lein run -m http.handler` 
    2011-12-31T04:45:05+00:00 app[web.1]: Listening for transport dt_socket at address: 37500 
    2011-12-31T04:45:06+00:00 heroku[web.1]: Error R11 (Bad bind) -> Process bound to port 37500, should be 14046 (see environment variable PORT) 
    2011-12-31T04:45:06+00:00 heroku[web.1]: Stopping process with SIGKILL 
    2011-12-31T04:45:07+00:00 heroku[web.1]: State changed from starting to crashed 
    2011-12-31T04:45:07+00:00 heroku[web.1]: Process exited 
    2011-12-31T04:49:22+00:00 heroku[router]: Error H10 (App crashed) -> GET bkeeping.herokuapp.com/ dyno= queue= wait= service= status=503 bytes= 
    2011-12-31T04:49:31+00:00 heroku[router]: Error H10 (App crashed) -> GET bkeeping.herokuapp.com/favicon.ico dyno= queue= wait= service= status=503 bytes= 

があるようです。しかし、Compojure/Ring/Jetty展開でポート割り当てを制御することはできません。私が間違っている? Webnoirで動作が変わるでしょうか?

ありがとうございます。

答えて

0

であなたのappを定義した後ので、あなたのコードは、このどこかに持っている必要があり、環境変数$PORT介してポート番号を提供しますこれを過ぎて。私は以前それに気づいているはず

 

    :jvm-opts ["-agentlib:jdwp=transport=dt_socket,server=y,suspend=n"] 

:それは私のproject.cljこのJDPAの設定を含めdefprojectを持っていたが判明しました。しかしそれはちょうどローカルで働くので、私はそれに疑問を抱くとは思わなかった。これは同じロードブロッキングをしている他の人に役立つことを願っています。

3

ハンドラが正しいポートにバインドされていることを確認してください。

Herokuのは、あなたが、私はいくつかの本当に良いヒントを得ましたが、私は最終的に取得することができwasnあなたhttp.handler

(let [port (Integer/parseInt (System/getenv "PORT"))] 
    (run-jetty app {:port port})) 
+0

これは間違いなく、手作業でセットアップしたのではなく、 '(System/getenv" PORT ")'にポートを設定することで速やかに修正された同様の問題がありました。 – djhworld

+0

フィードバックをいただきありがとうございます。 [Compojure http.handler](http://pastebin.com/QpSA5EXy)をPORTに渡すように変更しました。しかし、私はまだ[同じポートエラー](http://pastebin.com/SPegFZFq)を取得しています。 必要に応じてさらにコードをスローすることができます。しかし私の** Procfile **は同じように見えます。そして私は 'git push heroku :master'と私のカスタムブランチをherokuにプッシュしています。 – Nutritioustim

+0

コードでエラーが表示されません。メインハンドラとprocfileを使って、そのプロジェクトをオンラインで投げてもらえますか?あなたは他のコードを削除することができます。ちょうどHello Worldを残して、私はそれを喜んで提供します。 – leonardoborges