Ошибка порта при развертывании Heroku / Clojure - PullRequest
0 голосов
/ 02 января 2012

Это ответ на мой вопрос Heroku / Clojure здесь . Как отмечалось в этой теме, я смог передать свое приложение мастеру Heroku, и оно его развернуло.

Но когда я пытаюсь перейти по URL-адресу моего приложения, я получаю сообщение об ошибке ниже. Это странная ошибка порта, но я не думал, что смогу контролировать эти детали при развертывании приложения Clojure на Heroku. Я думаю, что моя установка довольно проста. Что я могу сделать, чтобы устранить эту ошибку?

PROCFILE


    web: lein run -m http.handler

http.handler


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

Error


    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=

Похоже, похожая проблема с Nodejs . Но опять же, я не думаю, что у меня есть контроль над назначением портов в развертывании Compojure / Ring / Jetty. Я ошибся? Изменится ли поведение с Webnoir?

Спасибо

Ответы [ 2 ]

3 голосов
/ 02 января 2012

Убедитесь, что ваш обработчик привязан к правильному порту.

Heroku предоставляет номер порта через переменную среды $PORT, поэтому ваш код должен иметь его где-то после того, как вы определите app в вашем http.handler

(let [port (Integer/parseInt (System/getenv "PORT"))]
  (run-jetty app {:port port}))
0 голосов
/ 06 января 2012

Хотя я получил несколько действительно хороших советов, я не смог, наконец, пройти через это. Оказывается, у моего project.clj был defproject, который включал эту конфигурацию JDPA:


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

Я должен был заметить это раньше. Но это работает только локально, так что я не думал ставить это под сомнение. Надеюсь, что это помогает другим, у которых тот же контрольно-пропускной пункт.

...