• 目录结构
    • 无盘与只读客户端

    目录结构

    发布处理器从发布包总安装的代码的目录结构:

    1. $ROOT/lib/App1-AVsn1/ebin
    2. /priv
    3. /App2-AVsn2/ebin
    4. /priv
    5. ...
    6. /AppN-AVsnN/ebin
    7. /priv
    8. /erts-EVsn/bin
    9. /releases/Vsn
    10. /bin
    • lib
    • 应用程序目录。
    • erts-EVsn/bin
    • Erlang运行时系统的可执行文件。
    • releases/Vsn
    • .rel 文件以及启动脚本 start.boot 。还有 relup 、 sys.config ,如果存在于发布包中。
    • bin
    • 顶层Erlang运行时系统可执行文件。应用不一定非得放在 $ROOT/lib 目录中。这样一来,一些安装目录可以存在并包含一个系统的不同部分。例如,前面的例子可以按如下方式扩展:
    1. $SECOND_ROOT/.../SApp1-SAVsn1/ebin
    2. /priv
    3. /SApp2-SAVsn2/ebin
    4. /priv
    5. ...
    6. /SAppN-SAVsnN/ebin
    7. /priv
    8.  
    9. $THIRD_ROOT/TApp1-TAVsn1/ebin
    10. /priv
    11. /TApp2-TAVsn2/ebin
    12. /priv
    13. ...
    14. /TAppN-TAVsnN/ebin
    15. /priv

    其中 $SECOND_ROOT$THIRD_ROOT 是作为调用 systools:make_script/2 函数中的变量引入的。

    无盘与只读客户端

    如果一个完整的系统包含一些无盘和只读客户端节点,那么必须在 $ROOT 目录中添加一个 clients 目录。一个只读节点的意思是一个节点的文件系统是只读的。

    clients 目录还应该对每个支持的客户端节点有一个对应的子目录。每个客户端目录的名字必须是对应的客户端节点的名字。每个客户端目录还应包含 binreleases 子目录。这些目录用于存放有关安装的发布的信息,并且给客户端指派当前的发布。终上所述, $ROOT 目录应包含以下内容:

    1. $ROOT/...
    2. /clients/ClientName1/bin
    3. /releases/Vsn
    4. /ClientName2/bin
    5. /releases/Vsn
    6. ...
    7. /ClientNameN/bin
    8. /releases/Vsn

    如果所有的客户端都运行在同一种类型的Erlang机器上,那么应该使用这种结构。如果有些客户端运行不同类型的Erlang机器,即运行在不同的操作系统上,那么 clients 目录可以被划分为每种Erlang机器一个子目录。或者,你也可以为每种类型的机器设置一个 $ROOT 。对于每种类型,还应包含为 $ROOT 指定的某些目录:

    1. $ROOT/...
    2. /clients/Type1/lib
    3. /erts-EVsn
    4. /bin
    5. /ClientName1/bin
    6. /releases/Vsn
    7. /ClientName2/bin
    8. /releases/Vsn
    9. ...
    10. /ClientNameN/bin
    11. /releases/Vsn
    12. ...
    13. /TypeN/lib
    14. /erts-EVsn
    15. /bin
    16. ...

    对于这个结构, Type1 型的客户端的根目录是 $ROOT/clients/Type1