目录结构
发布处理器从发布包总安装的代码的目录结构:
- $ROOT/lib/App1-AVsn1/ebin
- /priv
- /App2-AVsn2/ebin
- /priv
- ...
- /AppN-AVsnN/ebin
- /priv
- /erts-EVsn/bin
- /releases/Vsn
- /bin
- lib
- 应用程序目录。
- erts-EVsn/bin
- Erlang运行时系统的可执行文件。
- releases/Vsn
- .rel 文件以及启动脚本 start.boot 。还有 relup 、 sys.config ,如果存在于发布包中。
- bin
- 顶层Erlang运行时系统可执行文件。应用不一定非得放在 $ROOT/lib 目录中。这样一来,一些安装目录可以存在并包含一个系统的不同部分。例如,前面的例子可以按如下方式扩展:
- $SECOND_ROOT/.../SApp1-SAVsn1/ebin
- /priv
- /SApp2-SAVsn2/ebin
- /priv
- ...
- /SAppN-SAVsnN/ebin
- /priv
- $THIRD_ROOT/TApp1-TAVsn1/ebin
- /priv
- /TApp2-TAVsn2/ebin
- /priv
- ...
- /TAppN-TAVsnN/ebin
- /priv
其中 $SECOND_ROOT 和 $THIRD_ROOT 是作为调用 systools:make_script/2 函数中的变量引入的。
无盘与只读客户端
如果一个完整的系统包含一些无盘和只读客户端节点,那么必须在 $ROOT 目录中添加一个 clients 目录。一个只读节点的意思是一个节点的文件系统是只读的。
clients 目录还应该对每个支持的客户端节点有一个对应的子目录。每个客户端目录的名字必须是对应的客户端节点的名字。每个客户端目录还应包含 bin 和 releases 子目录。这些目录用于存放有关安装的发布的信息,并且给客户端指派当前的发布。终上所述, $ROOT 目录应包含以下内容:
- $ROOT/...
- /clients/ClientName1/bin
- /releases/Vsn
- /ClientName2/bin
- /releases/Vsn
- ...
- /ClientNameN/bin
- /releases/Vsn
如果所有的客户端都运行在同一种类型的Erlang机器上,那么应该使用这种结构。如果有些客户端运行不同类型的Erlang机器,即运行在不同的操作系统上,那么 clients 目录可以被划分为每种Erlang机器一个子目录。或者,你也可以为每种类型的机器设置一个 $ROOT 。对于每种类型,还应包含为 $ROOT 指定的某些目录:
- $ROOT/...
- /clients/Type1/lib
- /erts-EVsn
- /bin
- /ClientName1/bin
- /releases/Vsn
- /ClientName2/bin
- /releases/Vsn
- ...
- /ClientNameN/bin
- /releases/Vsn
- ...
- /TypeN/lib
- /erts-EVsn
- /bin
- ...
对于这个结构, Type1 型的客户端的根目录是 $ROOT/clients/Type1 。
当前内容版权归 ShiningRay 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 ShiningRay .