We are trying to deploy our Phoenix Web App to a Linux VM (in our case on Azure)
using edeliver
We have deployed a "basic" Blog App to Azure using edeliver and documented the steps:
https://github.com/dwyl/learn-microsoft-azure#part-2-deploying-your-application
And when we manually run the ("real") app: https://github.com/nelsonic/healthlocker
on the instance using MIX_ENV=prod mix phoenix.server it runs fine!
When we deploy and run the app to the Azure instance using the following commands:
mix edeliver build release --verbose
mix edeliver deploy release to production
mix edeliver start production
We get a positive confirmation message:
EDELIVER HEALTHLOCKER WITH START COMMAND
-----> starting production servers
production node:
user : root
host : 51.140.86.5
path : /home/hladmin
response: ok
START DONE!
However when we run netstat -plnt as suggested by checking-running-services-on-linux
we notice that edeliver is starting the Phoenix App on a random TCP Port:
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
In this case the app is running on PORT 38863, even thought our prod.exs config file has hard coded the PORT to 4000 and we have an Environment Variable to set it to 4000 in our .profile file as per the instructions (just-in-case).
So my questions are:
edeliver start the Phoenix App on a Random TCP PORT...?and
edeliver to boot the app on PORT 4000?Our .deliver/config is on GitHub.
We have attempted to read the logs in /home/{username}/{appname}/var/log as per @dogbert's instructions in:
How to View Production Logs in Phoenix Web Application Deployed using Edeliver?
But neither erlang.log.1 or run_erl.log made us any wiser... :-(
Any help understanding this would be much appreciated! (Please & Thanks!)
Note: Sadly, while this Q: Edeliver - Impossible to access on port 4000 after successful deploy sounds similar, the solution does not work for us (we tried)
It looks to me like you didn't read the Phoenix documentation for deploying via releases. Distillery also has documentation for this.
In a gist, this is what you need in your config:
config :healthlocker, Healthlocker.Endpoint
server: true,
root: ".",
version: Mix.Project.config[:version]
Ensure those three config options are set in your prod config.exs file, and you should be good to go.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With