【发布时间】:2015-10-24 09:37:28
【问题描述】:
我正在尝试使用 exrm 创建股票 Phoenix 应用程序(基于 Elixir 和 Erlang)的发布。
dev 混合环境的第一个版本创建良好,但在使用 ./rel/my_app/bin/my_app console 运行时崩溃。这是在 Vagrant/Virtual Box 虚拟机中运行 Ubuntu 14.04 时发生的。
在我的 Mac 上,相同的设置运行良好。不幸的是,我需要在与目标服务器具有相同架构的机器上构建版本,它将运行 Ubuntu。
您可以在此处找到该应用程序:https://github.com/mavenastic/my_app。它包括在 VM 上安装依赖项和创建项目所采取的步骤(请参阅STEPS.md)以及Erlang crash dump。
这是我尝试运行控制台时遇到的错误:
{"Kernel pid terminated",application_controller,"{application_start_failure,my_app,{{shutdown,{failed_to_start_child,'Elixir.MyApp.Endpoint',{shutdown,{failed_to_start_child,'Elixir.Phoenix.CodeReloader.Server',{undef,[{'Elixir.Mix.Project',config,[],[]},{'Elixir.Phoenix.CodeReloader.Server',init,1,[{file,\"lib/phoenix/code_reloader/server.ex\"},{line,29}]},{gen_server,init_it,6,[{file,\"gen_server.erl\"},{line,328}]},{proc_lib,init_p_do_apply,3,[{file,\"proc_lib.erl\"},{line,240}]}]}}}}},{'Elixir.MyApp',start,[normal,[]]}}}"}
编辑:
我尝试使用MIX_ENV=prod mix release 为生产环境创建一个版本。该版本已成功生成,MIX_ENV=prod PORT=8889 ./rel/my_app/bin/my_app console 运行良好。但是,一旦启动,我就无法 ping 服务器,也无法运行远程控制台,因此应用程序似乎仍然缺少一些东西才能正常运行。
$ MIX_ENV=prod PORT=8889 ./rel/my_app/bin/my_app start
$ MIX_ENV=prod PORT=8889 ./rel/my_app/bin/my_app ping
=INFO REPORT==== 24-Oct-2015::10:28:25 ===
Protocol: "inet_tcp": register/listen error: econnrefused
escript: exception error: no match of right hand side value
{error,
{{shutdown,
{failed_to_start_child,net_kernel,
{'EXIT',nodistribution}}},
{child,undefined,net_sup_dynamic,
{erl_distribution,start_link,
[['my_app_maint_2551@127.0.0.1',longnames]]},
permanent,1000,supervisor,
[erl_distribution]}}}
$ ps aux | grep my_app
vagrant 2572 0.0 0.0 7532 96 ? S 10:28 0:00 /vagrant/my_app/rel/my_app/erts-7.1/bin/epmd -daemon
vagrant 2575 0.0 0.2 9448 2256 pts/0 S+ 10:28 0:00 grep --color=auto my_app
$ MIX_ENV=prod PORT=8889 ./rel/my_app/bin/my_app remote_console
$
另外,根据我收集到的信息,我应该能够为dev 或任何其他环境创建一个版本。所以缺少的部分可能会影响这两种环境。
提前致谢!
【问题讨论】:
标签: release elixir phoenix-framework exrm