2012-01-01 3 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= 

012,346,999있는 것으로 보인다. 하지만 Compojure/Ring/Jetty 배포에서 포트 할당을 제어 할 수 있다고 생각하지 않습니다. 내가 잘못? Webnoir와 함께 행동이 바뀔까요?

감사합니다.

답변

0

, 나는 마침내 얻을 수 년후 당신의 app 과거. 내 project.clj 가이 JDPA 구성을 포함 defproject했다 밝혀 졌 : config를

 

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

나는 이전에 그것을 발견 했어야했다. 그러나 그것은 단지 지역적으로 작동하기 때문에 나는 그것에 대해 생각할 생각을하지 못했습니다. 이것이 동일한 장애물을 가진 다른 사람들을 도울 수 있기를 바랍니다.

3

처리기가 올바른 포트에 바인딩되어 있는지 확인하십시오.

Heroku가 사용자가 정의한 후 그래서 코드는이 곳이 있어야 환경 변수 $PORT을 통해 포트를 제공하여 내가 정말 좋은 힌트를 가지고 있지만 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