我正在尝试在嵌入式模式下的应用程序(如dep)中使用YAWS。我正在使用rebar3。我的应用程序通过debar生成yaws,并通过rebar3构建(经过一些调整)并释放良好,但是当我启动它时,YAWS崩溃了。看起来它即使在嵌入式模式下也试图启动。
我正在尝试将yaws.app.src配置为嵌入式模式env,如下所示:
{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)
,我相信可以通过在{yaws, load}
文件的relx部分中指定rebar.config
来完成。然后,您应该在“在自己的主管下启动”部分下使用following these instructions in the Yaws documentation。根据您的特定需求,您可以调用yaws_api:embedded_start_conf/1,2,3,4
之一来获取Yaws服务器conf,全局conf和子级规范。然后,您将使用子规范在主管下启动Yaws,如“使用Embedded_start_conf”中所述,然后设置Yaws配置服务器confs和global conf使其运行。
(顺便说一句,我是Yaws的贡献者,目前正在确保Yaws与rebar3兼容。我将向Yaws发行版中添加所需的任何源或文档,以帮助像您一样尝试在rebar3中使用的用户。)