我们正在尝试将我们的Phoenix Web App部署到Linux VM(在我们的案例中是在Azure上)
使用edeliver
我们使用edeliver
和记录步骤为Azure部署"basic" Blog App:
https://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??和
edeliver
上启动应用程序?我们的.deliver/config
位于GitHub上。
我们尝试按照@ dogbert的说明在4000
中阅读日志:
How to View Production Logs in Phoenix Web Application Deployed using Edeliver?
但是 /home/{username}/{appname}/var/log
或erlang.log.1
都没有让我们任何更聪明的 ...: - (
任何帮助理解这将是非常赞赏! (请&谢谢!)
注意:遗憾的是,虽然此问:Edeliver - Impossible to access on port 4000 after successful deploy 听起来类似,但该解决方案对我们无效(我们尝试 )
答案 0 :(得分:3)
在我看来,您并没有阅读Phoenix文档来部署via版本。 Distillery也有相关文档。
在要点中,这是您在配置中所需要的:
config :healthlocker, Healthlocker.Endpoint
server: true,
root: ".",
version: Mix.Project.config[:version]
确保在您的prod config.exs
文件中设置了这三个配置选项,您应该很高兴。