Heroku / Clojure部署时端口错误



这是我的Heroku/Clojure问题的后续问题。正如在那个线程中概述的那样,我能够将我的应用程序推送到Heroku的主服务器,并部署它。

但是当我试图去我的应用程序的URL,我得到下面的错误。这是一个奇怪的端口错误,但当我在Heroku上部署Clojure应用程序时,我认为我无法控制这些细节。我觉得我的设置很简单。我能做些什么来解决这个错误吗?

Procfile

<>之前Web:请运行-m http.handler之前

http.handler

<>之前…(def app (handler/site main))之前误差

<>之前2011 - 12 - 31 - t04:10:02 + 00:00应用(网络。1]:正在监听地址:41208的传输dt_socket2011 - 12 - 31 - t04:10:03 + 00:00 heroku [web。[web. 1]:使用SIGKILL停止进程2011-12-31T04:10:03+00:00 heroku[web. 1]1]:错误R11 (Bad bind) ->进程绑定到端口41208,应该是55032(参见环境变量port)2011 - 12 - 31 - t04:10:04 + 00:00 heroku [web。1]:状态从starting变为crash2011 - 12 - 31 - t04:10:05 + 00:00 heroku [web。1]:进程退出2011 - 12 - 31 - t04:20:08 + 00:00 heroku [web。[日志示例]:状态从crash变为created 2011-12-31T04:20:08+00:00 heroku[web. net]。[web. 1]: State changed from created to starting 2011-12-31T04:20:12+00:00 heroku[web.]1]:使用命令"lein run -m http.handler"启动进程2011 - 12 - 31 - t04:20:16 + 00:00应用(网络。[web. 1]:在地址:49151 2011-12-31T04:20:16+00:00 heroku上监听传输dt_socket。[1]:错误R11 (Bad bind) ->进程绑定到端口49151,应该是39092(参见环境变量port)2011 - 12 - 31 - t04:20:16 + 00:00 heroku [web。1]:使用SIGKILL停止进程2011 - 12 - 31 - t04:20:17 + 00:00 heroku [web。1]:状态从starting变为crash2011 - 12 - 31 - t04:20:18 + 00:00 heroku [web。1]:进程退出2011 - 12 - 31 - t04:31:13 + 00:00 heroku [web。1]:状态从crash变为created2011 - 12 - 31 - t04:31:13 + 00:00 heroku [web。1]:从创建状态变为启动状态2011 - 12 - 31 - t04:31:16 + 00:00 heroku [web。1]:使用命令"lein run -m http.handler"启动进程2011 - 12 - 31 - t04:31:20 + 00:00应用(网络。1]:正在监听地址:44321的传输dt_socket2011 - 12 - 31 - t04:31:20 + 00:00 heroku [web。1]:错误R11 (Bad bind) ->进程绑定到端口44321,应该是17211(参见环境变量port)2011 - 12 - 31 - t04:31:20 + 00:00 heroku [web。1]:使用SIGKILL停止进程2011 - 12 - 31 - t04:31:22 + 00:00 heroku [web。1]:状态从starting变为crash2011 - 12 - 31 - t04:31:22 + 00:00 heroku [web。1]:进程退出2011 - 12 - 31 - t04:44:59 + 00:00 heroku [web。1]:状态从crash变为created2011 - 12 - 31 - t04:44:59 + 00:00 heroku [web。1]:从创建状态变为启动状态2011 - 12 - 31 - t04:45:02 + 00:00 heroku [web。1]:使用命令"lein run -m http.handler"启动进程2011 - 12 - 31 - t04:45:05 + 00:00应用(网络。1]:正在监听地址:37500的传输dt_socket2011 - 12 - 31 - t04:45:06 + 00:00 heroku [web。1]:错误R11 (Bad bind) ->进程绑定到端口37500,应该是14046(参见环境变量port)2011 - 12 - 31 - t04:45:06 + 00:00 heroku [web。1]:使用SIGKILL停止进程2011 - 12 - 31 - t04:45:07 + 00:00 heroku [web。1]:状态从starting变为crash2011 - 12 - 31 - t04:45:07 + 00:00 heroku [web。1]:进程退出2011-12-31T04:49:22+00:00 heroku[router]: Error H10 (App crash) -> GET bkeep.herokuapp.com/dyno= queue= wait= service= status=503 bytes= .2011-12-31T04:49:31+00:00 heroku[router]: Error H10 (App crash) -> GET bkeeping.herokuapp.com/favicon.ico dyno= queue= wait= service= status=503 bytes=之前

Nodejs似乎也有类似的问题。但是,我认为我无法控制Compojure/Ring/Jetty部署中的端口分配。我错了吗?Webnoir会改变人们的行为吗?

谢谢

确保你的处理程序绑定到正确的端口。

Heroku通过环境变量$PORT提供端口号,因此在您在http.handler

中定义app之后,您的代码应该在某个地方包含此端口号。
(let [port (Integer/parseInt (System/getenv "PORT"))]
  (run-jetty app {:port port}))

虽然我得到了一些非常好的提示,但我最终还是无法通过这个。这是我的课题。clj有一个包含以下jpa配置的缺陷项目:

<>之前: jvm-opts("-agentlib: jdwp =运输= dt_socket, server = y,暂停= n")之前

我应该早点注意到的。但它只在局部有效,所以我没想过要质疑它。希望这能帮助到其他遇到同样障碍的人。

相关内容

最新更新