Erlang 什么是「;应用程序配置文件";在rebar3应用程序中?

Erlang 什么是「;应用程序配置文件";在rebar3应用程序中?,erlang,Erlang,他说, 以下内容将放在Erlang node应用程序中 在应用程序启动时启动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"}]}]}]}

他说,

以下内容将放在Erlang node应用程序中 在应用程序启动时启动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创建的应用程序中,这一点在哪里

他说,

7.8配置应用程序

可以使用配置参数配置应用程序。这些 是由.app中的键env指定的{Par,Val}元组列表 文件:

Par是一个原子。Val是任何术语


这似乎建议您使用
{Name,Value}
元组创建环境变量。但是,在httpd服务器文档中指定的所需代码似乎不是该格式。

只需将其放入发行版的config文件夹中的sys.config文件中即可。如果您已有任何资料,则其格式为:

[
 {some_app, [{env_var, value},{...}]},
 {another_app, [{env_var, value},{...}]},
 % add here without outer[]...,
 {kernel,
  [{distributed, [{app_name, 5000,
  ['node@10.0.211.153', 'node_failover@10.8.222.15']}]}, 
  {sync_nodes_mandatory, []},
  {sync_nodes_optional, ['node_failover@10.8.222.15']},
  {sync_nodes_timeout, 5000}]}
]

检查上关于sys.config的部分和文档中关于Applications.sys.config文件的部分,该文件位于应用程序的config文件夹中——rebar3没有为我创建配置目录,我也没有看到“使用Erlang/OTP设计可伸缩性”一书中“第9章:应用程序”中提到的配置目录(Cesarini,Vinoski)”。我尝试创建一个配置目录和一个sys.config文件,但是当我执行
$rebar3 shell
并尝试向iNet httpd服务器发送请求时,我得到了一个“连接被拒绝”error.rebar3仅在使用rebar3 new release release_name时创建文件夹。如果使用rebar3 new app_name,则不会创建配置文件夹和文件。或者,您可以将其直接放入应用程序配置文件中,通常放在您的_app.app.src的src文件夹中。添加{env,[{Key,Val}]}}请参阅。使用应用程序时:get env(AppName,Key)。它将从两个文件中获取它们,因此rebar3可能会将其写入同一个位置。
[
 {some_app, [{env_var, value},{...}]},
 {another_app, [{env_var, value},{...}]},
 % add here without outer[]...,
 {kernel,
  [{distributed, [{app_name, 5000,
  ['node@10.0.211.153', 'node_failover@10.8.222.15']}]}, 
  {sync_nodes_mandatory, []},
  {sync_nodes_optional, ['node_failover@10.8.222.15']},
  {sync_nodes_timeout, 5000}]}
]