9

我们正在尝试将我们的 Phoenix Web 应用程序部署到 Linux VM(在我们的例子中是在 Azure 上),edeliver 我们已经使用并记录了步骤: https ://github.com/dwyl/learn- 将“基本”博客应用程序部署到 Azure microsoft-azure#part-2-deploying-your-applicationedeliver

当我们 使用它的实例上手动运行(“真正的”)应用程序时:httpsMIX_ENV=prod mix phoenix.server ://github.com/nelsonic/healthlocker运行良好!

当我们使用以下命令将应用程序部署并运行到 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!

但是,当我们按照checks-running-services-on-linux 的netstat -plnt建议运行时, 我们注意到正在随机TCP 端口上启动 Phoenix 应用程序:edeliver

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配置文件已将PORT硬编码为,4000 并且我们有一个环境变量可以按照说明4000在我们的.profile文件中设置它(以防万一)。

所以我的问题是:

为什么在随机edeliverTCP 端口上启动 Phoenix 应用程序...?

如何edeliverPORT 上启动应用程序4000

我们.deliver/config在 GitHub 上。

我们已尝试按照@dogbert 的说明 阅读日志:如何查看使用 Edeliver 部署的 Phoenix Web 应用程序中的生产日志?既没有也没有让我们变得更聪明...... :-(/home/{username}/{appname}/var/log erlang.log.1run_erl.log

任何帮助理解这一点将不胜感激!(请&谢谢!

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

4

1 回答 1

4

在我看来,您似乎没有阅读 Phoenix 文档以通过发布进行部署。酿酒厂也有这方面的文件。

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

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

确保在您的 prod 文件中设置了这三个配置选项config.exs,您应该一切顺利。

于 2017-06-30T22:02:37.607 回答