我使用edeliver在aws上部署。部署运行正常,但当我尝试使用curl localhost:8888
访问控制台中的网站时,出现connection refused
错误。
如果我尝试使用./rel/bin/app_name console
启动应用,则会收到(RuntimeError) expected the PORT environment variable to be set
。但是我的config/prod.exs
看起来像这样。
use Mix.Config
config :elixir_deploy, ElixirDeployWeb.Endpoint,
load_from_system_env: true,
http: [port: 8888],
ssl: false,
url: [host: "example.com", port: 80],
cache_static_manifest: "priv/static/cache_manifest.json"
config :logger, level: :info
import_config "prod.secret.exs"
我在这里缺少什么?如果我在手动启动之前设置了PORT=8888
,它可以正常工作,但我宁愿自动启动edeliver
答案 0 :(得分:5)
您需要将load_from_system_env
设置为false
(或者只删除该行)。如果它是true
,则菲尼克斯生成的默认endpoint.ex
将使用PORT
环境变量的值,如果找不到它,则&#&# 39; ll引发错误。
if config[:load_from_system_env] do
port = System.get_env("PORT") || raise "expected the PORT environment variable to be set"
{:ok, Keyword.put(config, :http, [:inet6, port: port])}
else
{:ok, config}
end