Heroku上的Phoenix部署未能绑定$ PORT

时间:2016-02-07 12:27:53

标签: heroku elixir phoenix-framework

我在heroku服务器上部署应用程序时遇到很大问题。我已经在凤凰网页的教程的帮助下完成了它。但它不起作用。您可以在下面看到我使用的日志和配置。

heroku日志

2016-02-07T04:28:55.623435+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web
process failed to bind to $PORT within 60 seconds of launch
2016-02-07T04:28:55.623435+00:00 heroku[web.1]: Stopping process with SIGKILL
2016-02-07T04:28:56.344649+00:00 heroku[web.1]: State changed from starting to c
rashed
2016-02-07T04:28:56.348324+00:00 heroku[web.1]: Process exited with status 137
2016-02-07T09:54:29.124036+00:00 heroku[web.1]: State changed from crashed to st
arting
2016-02-07T09:54:34.703208+00:00 heroku[web.1]: Starting process with command `m
ix run --no-halt`
2016-02-07T09:55:35.386922+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web
process failed to bind to $PORT within 60 seconds of launch
2016-02-07T09:55:35.386922+00:00 heroku[web.1]: Stopping process with SIGKILL
2016-02-07T09:55:36.330258+00:00 heroku[web.1]: State changed from starting to c
rashed
2016-02-07T09:55:36.323082+00:00 heroku[web.1]: Process exited with status 137
2016-02-07T12:14:35.182306+00:00 heroku[router]: at=error code=H10 desc="App cra
shed" method=GET path="/" host=kpsz.herokuapp.com request_id=7de0ee97-14cf-46f9-
a9a3-cbffa09ac379 fwd="83.7.11.212" dyno= connect= service= status=503 bytes=
2016-02-07T12:14:35.850018+00:00 heroku[router]: at=error code=H10 desc="App cra
shed" method=GET path="/favicon.ico" host=kpsz.herokuapp.com request_id=4e9b1979
-deb6-497b-80b2-655615f43d01 fwd="83.7.11.212" dyno= connect= service= status=50
3 bytes=

配置prod.exs

config :kpsz, Kpsz.Endpoint,
  http: [port: System.get_env("PORT")],
  url: [host: "example.com", port: 80],
  cache_static_manifest: "priv/static/manifest.json",
  secret_key_base: System.get_env("SECRET_KEY_BASE")

config :kpsz, Kpsz.Repo,
  adapter: Ecto.Adapters.Postgres,
  url: System.get_env("DATABASE_URL"),
  pool_size: 20

5 个答案:

答案 0 :(得分:2)

我不确定这是否是问题,但您可以尝试更换

http: [port: System.get_env("PORT")]

http: [port: {:system, "PORT"}]

至少我在我的应用中使用的是什么。您还可以阅读文档以获取更多信息http://www.phoenixframework.org/docs/heroku

答案 1 :(得分:1)

我有类似的问题。 使用单行web: mix phoenix.server添加Procfile解决了它。

答案 2 :(得分:0)

heroku破坏项目名称

heroku create

并且由于一些奇怪的原因它现在有用......

非常感谢您的帮助。

答案 3 :(得分:0)

我遇到了这个问题,对我来说,修复方法如下(从this question的答案中复制而来)。

修复是双重的:

  1. 使用phoenix buildpack配置并导出PORT,如下所示:config_vars_to_export =(DATABASE_URL PORT)
  2. 避免更改MIX_ENV而不重新编译应用程序,因为此行为不受支持,如此处所述。

答案 4 :(得分:0)

由于娱乐解决了这个问题,我怀疑问题出在加载环境变量上。

我在当地遇到过类似的问题。我的观察

  1. mix phoenix.server(您可能会看到编译的消息等等)
  2. 停止服务器
  3. 导出/更改zshrc / bashrc文件中的env变量并将其源化
  4. 启动服务器(您可能看不到该编译消息,因为您的代码库没有任何变化,因此您的新/已编辑的env变量不会得到反映)
  5. 如果您只是在该文件中添加一个空格,则会使其编译并获取该env变量。
  6. 您的问题的原因可能是:在服务器运行/部署后设置env变量,因为env变量在编译时自身转换为值。