rebar3应用中「应用配置文件」是什么?inets httpd配置放何处?
在Rebar3应用中配置Inets HTTP服务器的位置
我来帮你梳理清楚这个问题哈~
首先,inets httpd服务器文档指出:
以下内容需放入Erlang节点的应用配置文件,以在应用启动时启动HTTP服务器:
[{inets, [{services, [{httpd, [{proplist_file, "/var/tmp/server_root/conf/8888_props.conf"}]}, {httpd, [{proplist_file, "/var/tmp/server_root/conf/8080_props.conf"}]}]}]}].
那在rebar3创建的应用里,这段代码该放哪儿呢?我们再结合OTP应用文档的内容来看:
7.8 配置应用
应用可通过配置参数进行配置,这些参数是.app文件中由env键指定的{Par,Val}元组列表:{application, ch_app, [ {description, "Channel allocator"}, {vsn, "1"}, {modules, [ch_app, ch_sup, ch3]}, {registered, [ch3]}, {applications, [kernel, stdlib, sasl]}, {mod, {ch_app,[]}}, {env, [{file, "/usr/local/log"}]} ]}.Par为原子,Val可为任意项。
这里看起来格式有差异,但其实很好适配:你只需要把inets要求的配置内容,放到rebar3项目中应用的.app.src文件(编译后会生成对应的.app文件)的env字段里就行。
具体操作步骤:
- 找到你应用目录下
src/[你的应用名].app.src文件 - 找到其中的
{env, []}配置项,把inets的配置调整成键值对形式填进去,最终大概是这样:
{application, your_app_name, [ % ... 其他原有配置项 ... {env, [ {inets, [{services, [ {httpd, [{proplist_file, "/var/tmp/server_root/conf/8888_props.conf"}]}, {httpd, [{proplist_file, "/var/tmp/server_root/conf/8080_props.conf"}]} ]}]} ]} ]}.
这样当你的应用启动时,inets就能读取到这些配置,自动启动指定的HTTP服务器了。
另外还有一种可选方式:把配置放到专门的sys.config文件中,然后在rebar.config里指定加载这个配置文件的路径,启动应用时加载也能生效。不过更贴合OTP应用规范的还是第一种方式,让配置和应用本身绑定在一起。
内容的提问来源于stack exchange,提问作者7stud
相关产品推荐
相关产品推荐

