我们正在尝试将我们的 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
文件中设置它(以防万一)。
所以我的问题是:
为什么在随机edeliver
TCP 端口上启动 Phoenix 应用程序...?
和
如何在edeliver
PORT 上启动应用程序4000
?
我们.deliver/config
在 GitHub 上。
我们已尝试按照@dogbert 的说明
阅读日志:如何查看使用 Edeliver 部署的 Phoenix Web 应用程序中的生产日志?
但既没有也没有让我们变得更聪明...... :-(/home/{username}/{appname}/var/log
erlang.log.1
run_erl.log
任何帮助理解这一点将不胜感激!(请&谢谢!)
注意:可悲的是,虽然这个 Q: Edeliver - 成功部署后无法访问端口 4000 听起来很相似,但该解决方案对我们不起作用(我们尝试过)