YAWS Embedded 作为对 rebar3 问题的依赖
YAWS Embedded as dependence in rebar3 issue
我正在尝试在嵌入式模式下的应用程序(作为 dep)中使用 YAWS。我正在使用钢筋3。我的应用程序在通过 rebar3 进行部署和构建时出现偏航(经过一些调整后)并正常发布,但是当我启动它时,YAWS 崩溃了。看起来它正在尝试启动,即使它应该处于嵌入式模式。
我正在尝试将 yaws.app.src 配置为嵌入模式环境,如下所示:
{application,yaws,
[{description,"yaws WWW server"},
{vsn, {cmd, "sed -ne '1,/^YAWS_VSN=/s/^YAWS_VSN=//p' vsn.mk 2>/dev/null"}},
{modules,[]},
{registered, []},
{mod,{yaws_app,[]}},
{env, [
{embedded, true} % true | false
]},
{applications,[kernel,stdlib@APPDEPS@]}]}.
我认为它是自动启动的,因为它在我的 app.src 文件中被列为应用程序。 (虽然不确定)如果我从这里删除,我不会获得 YAW 的发布文件。但是当启动时它正在寻找配置文件而不是像在嵌入式模式下那样。
=INFO REPORT==== 2-Sep-2015::19:00:58 ===
Yaws: Using config file /Users/someuser/csvp/_build/default/lib/yaws/etc/yaws/yaws.conf
我错过了什么??为什么它仍在启动以及为什么它使用配置文件?
我怀疑您指定 Yaws 应该在发布开始时启动,与发布中的其他应用程序一样;基本上,相当于调用 application:start(yaws).
你应该做的是加载 Yaws 但不启动它 - 相当于 application:load(yaws)
- 我相信你可以通过在 relx 中指定 {yaws, load}
rebar.config
文件的一部分。然后你应该 follow these instructions in the Yaws documentation 在“在你自己的主管下开始”部分下。根据您的具体需要,您可以调用 yaws_api:embedded_start_conf/1,2,3,4
之一来获取 Yaws 服务器 conf、全局 conf 和子规范。然后,您将使用子规范在您的主管下启动 Yaws,如“使用 embedded_start_conf”中所述,然后设置 Yaws 配置服务器 confs 和全局 conf 以获取它 运行.
在我看来,嵌入 yaws 应用程序的整个过程记录得很少(我现在打算整理一份指南并自己写在博客上)- 在某些时候我很困惑并认为 application:start(yaws ) 是成功嵌入偏航系统所必需的调用,所以我将它放在我的最高级别主管代码中。我一定是忘了删除它,然后我花了很长时间尝试调试以下奇怪的错误(雅司实际上仍在工作,但它们看起来很可怕)。此处建议的修复也对我有用,请从您的代码中删除 application:start(yaws)。
=ERROR REPORT==== 28-Dec-2015::08:10:55 ===
Failed to load setuid_drv (from "/usr/home/ec2-user/myapp/_build/default/lib/yaws/priv/lib") : "Cannot open \"/usr/home/ec2-user/myapp/_build/default/lib/yaws/priv/lib/setuid_drv.so\""
=ERROR REPORT==== 28-Dec-2015::08:10:55 ===
FATAL {'EXIT',normal}
=INFO REPORT==== 28-Dec-2015::08:10:55 ===
application: yaws
exited: {{shutdown,
{failed_to_start_child,yaws_server,
{badconf,
[{yaws_server,init,1,
[{file,
"/usr/home/ec2-user/myapp/_build/default/lib/yaws/src/yaws_server.erl"},
{line,190}]},
{gen_server,init_it,6,
[{file,"gen_server.erl"},{line,328}]},
{proc_lib,init_p_do_apply,3,
[{file,"proc_lib.erl"},{line,240}]}]}}},
{yaws_app,start,[normal,[]]}}
type: temporary
ok
我正在尝试在嵌入式模式下的应用程序(作为 dep)中使用 YAWS。我正在使用钢筋3。我的应用程序在通过 rebar3 进行部署和构建时出现偏航(经过一些调整后)并正常发布,但是当我启动它时,YAWS 崩溃了。看起来它正在尝试启动,即使它应该处于嵌入式模式。
我正在尝试将 yaws.app.src 配置为嵌入模式环境,如下所示:
{application,yaws,
[{description,"yaws WWW server"},
{vsn, {cmd, "sed -ne '1,/^YAWS_VSN=/s/^YAWS_VSN=//p' vsn.mk 2>/dev/null"}},
{modules,[]},
{registered, []},
{mod,{yaws_app,[]}},
{env, [
{embedded, true} % true | false
]},
{applications,[kernel,stdlib@APPDEPS@]}]}.
我认为它是自动启动的,因为它在我的 app.src 文件中被列为应用程序。 (虽然不确定)如果我从这里删除,我不会获得 YAW 的发布文件。但是当启动时它正在寻找配置文件而不是像在嵌入式模式下那样。
=INFO REPORT==== 2-Sep-2015::19:00:58 ===
Yaws: Using config file /Users/someuser/csvp/_build/default/lib/yaws/etc/yaws/yaws.conf
我错过了什么??为什么它仍在启动以及为什么它使用配置文件?
我怀疑您指定 Yaws 应该在发布开始时启动,与发布中的其他应用程序一样;基本上,相当于调用 application:start(yaws).
你应该做的是加载 Yaws 但不启动它 - 相当于 application:load(yaws)
- 我相信你可以通过在 relx 中指定 {yaws, load}
rebar.config
文件的一部分。然后你应该 follow these instructions in the Yaws documentation 在“在你自己的主管下开始”部分下。根据您的具体需要,您可以调用 yaws_api:embedded_start_conf/1,2,3,4
之一来获取 Yaws 服务器 conf、全局 conf 和子规范。然后,您将使用子规范在您的主管下启动 Yaws,如“使用 embedded_start_conf”中所述,然后设置 Yaws 配置服务器 confs 和全局 conf 以获取它 运行.
在我看来,嵌入 yaws 应用程序的整个过程记录得很少(我现在打算整理一份指南并自己写在博客上)- 在某些时候我很困惑并认为 application:start(yaws ) 是成功嵌入偏航系统所必需的调用,所以我将它放在我的最高级别主管代码中。我一定是忘了删除它,然后我花了很长时间尝试调试以下奇怪的错误(雅司实际上仍在工作,但它们看起来很可怕)。此处建议的修复也对我有用,请从您的代码中删除 application:start(yaws)。
=ERROR REPORT==== 28-Dec-2015::08:10:55 ===
Failed to load setuid_drv (from "/usr/home/ec2-user/myapp/_build/default/lib/yaws/priv/lib") : "Cannot open \"/usr/home/ec2-user/myapp/_build/default/lib/yaws/priv/lib/setuid_drv.so\""
=ERROR REPORT==== 28-Dec-2015::08:10:55 ===
FATAL {'EXIT',normal}
=INFO REPORT==== 28-Dec-2015::08:10:55 ===
application: yaws
exited: {{shutdown,
{failed_to_start_child,yaws_server,
{badconf,
[{yaws_server,init,1,
[{file,
"/usr/home/ec2-user/myapp/_build/default/lib/yaws/src/yaws_server.erl"},
{line,190}]},
{gen_server,init_it,6,
[{file,"gen_server.erl"},{line,328}]},
{proc_lib,init_p_do_apply,3,
[{file,"proc_lib.erl"},{line,240}]}]}}},
{yaws_app,start,[normal,[]]}}
type: temporary
ok