Edeliver在随机TCP端口上启动Phoenix/Elixir应用程序

nel*_*nic 9 deployment elixir azure phoenix-framework edeliver

我们正在尝试将我们的Phoenix Web App部署到Linux VM(在我们的Azure案例中)使用edeliver 我们已经使用Azure部署了一个"基本"博客应用程序,edeliver记录了以下步骤:https: //github.com/dwyl/learn-微软蔚蓝#部分2 -部署-您的应用程序

当我们手动运行(" ")的应用程序:https://github.com/nelsonic/healthlocker 使用上的实例MIX_ENV=prod mix phoenix.server运行良好!

当我们使用以下命令将应用程序部署并运行到Azure实例时:

mix edeliver build release --verbose
mix edeliver deploy release to production
mix edeliver start production
Run Code Online (Sandbox Code Playgroud)

我们收到一条肯定的确认消息:

EDELIVER HEALTHLOCKER WITH START COMMAND

-----> starting production servers

production node:

  user    : root
  host    : 51.140.86.5
  path    : /home/hladmin
  response: ok


START DONE!
Run Code Online (Sandbox Code Playgroud)

但是当我们netstat -plnt按照check-running-services-on-linux的建议运行时, 我们注意到edeliver随机 TCP端口上启动了Phoenix App :

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:29130         0.0.0.0:*               LISTEN      3759/mdsd
tcp        0      0 0.0.0.0:38863           0.0.0.0:*               LISTEN      56269/beam.smp
tcp        0      0 0.0.0.0:4369            0.0.0.0:*               LISTEN      32642/epmd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1557/sshd
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      16901/postgres
tcp6       0      0 :::4369                 :::*                    LISTEN      32642/epmd
tcp6       0      0 :::22                   :::*                    LISTEN      1557/sshd
Run Code Online (Sandbox Code Playgroud)

在这种情况下,应用程序在PORT上运行38863,即使我们的prod.exs配置文件已经将PORT 硬编码4000 ,我们也有一个环境变量可以根据说明(仅在案例中)将其设置到4000我们的.profile文件中.

所以我的问题是:

为什么edeliver随机 TCP端口上启动Phoenix App ...?

如何才能获得edeliver启动端口上的应用程序4000

我们.deliver/config在GitHub上.

我们已经尝试读取日志/home/{username}/{appname}/var/log按@在dogbert的说明: 如何查看生产测井凤凰Web应用程序使用Edeliver部署?既不是 erlang.log.1或者run_erl.log让我们更聪明 ...... :-(

任何帮助理解这一点将非常感谢!(请和谢谢!)

注意:遗憾的是,虽然这个Q:Edeliver - 成功部署后无法在端口4000上访问 听起来类似,但该解决方案对我们不起作用(我们尝试过)

bit*_*ker 4

在我看来,您似乎没有阅读有关通过版本进行部署的 Phoenix 文档。Distillery也有这方面的文档。

简而言之,这就是您的配置中需要的:

config :healthlocker, Healthlocker.Endpoint
  server: true,
  root: ".",
  version: Mix.Project.config[:version]
Run Code Online (Sandbox Code Playgroud)

确保在您的 prod 文件中设置了这三个配置选项config.exs,然后就可以开始了。

  • 成功了!@bitwalker 你_传奇_!感谢您帮助我们解决这个问题!并感谢酿酒厂。:-) (2认同)