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

时间:2017-06-30 21:21:36

标签: azure deployment elixir phoenix-framework edeliver

我们正在尝试将我们的Phoenix Web App部署到Linux VM(在我们的案例中是在Azure上) 使用edeliver 我们使用edeliver记录步骤为Azure部署"basic" Blog Apphttps://github.com/dwyl/learn-microsoft-azure#part-2-deploying-your-application

当我们手动运行(“真正的”)应用时,

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

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

EDELIVER HEALTHLOCKER WITH START COMMAND

-----> starting production servers

production node:

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


START DONE!

但是,当我们按checking-running-services-on-linux的建议运行netstat -plnt时 我们注意到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

在这种情况下,应用程序在PORT 38863上运行,即使我们的prod.exs config file has hard coded the PORT to 4000 ,我们也有一个环境变量将其设置为我们.profile file中的4000符合说明(只是在案例中)。

所以我的问题是:

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

如何<{1}}在PORT edeliver上启动应用程序?

我们的.deliver/config位于GitHub上。

我们尝试按照@ dogbert的说明在4000中阅读日志How to View Production Logs in Phoenix Web Application Deployed using Edeliver? 但是 /home/{username}/{appname}/var/logerlang.log.1都没有让我们任何更聪明的 ...: - (

任何帮助理解这将是非常赞赏! (请&谢谢!

注意:遗憾的是,虽然此问:Edeliver - Impossible to access on port 4000 after successful deploy 听起来类似,但该解决方案对我们无效(我们尝试

1 个答案:

答案 0 :(得分:3)

在我看来,您并没有阅读Phoenix文档来部署via版本。 Distillery也有相关文档。

在要点中,这是您在配置中所需要的:

config :healthlocker, Healthlocker.Endpoint
  server: true,
  root: ".",
  version: Mix.Project.config[:version]

确保在您的prod config.exs文件中设置了这三个配置选项,您应该很高兴。