我刚刚设法使用带有 systemd 的 erlang 安装系统来安装代码存储库。此过程符合有关设置嵌入式系统的 erlang 文档。这是我学到的:
1) 需要在 erts/examples 中添加安装工具的路径。这是我的 .erlang 文件的摘录:
code:add_path(filename:join([os:getenv("ROOTDIR"),"lib/sasl-2.6/examples/ebin"])).
2) 按照 erlang/doc/system_principles/create_target.html 进行构建
target_system:create("mysystem").
3) 将构建提取到临时位置。对于我的应用程序,它是通过 erlang 完成的:
target_system:install("code_repository", "/home/tony/Projects/code_repository/release_test").
4) 编辑 start 的最后一行运行 erl 并删除 -daemon 选项并添加所需的任何 erlang 运行时参数,如 -sname 或 -set_cookie。这在 erlang/doc/embedded/embedded_solaris.html#idm45326372314928 中有概述。这是我系统中编辑的行:
$ROOTDIR/bin/run_erl /tmp/ $ROOTDIR/log "exec $ROOTDIR/bin/start_erl $ROOTDIR $RELDIR $START_ERL_DATA -sname code_repository"
5) 安装到运行时位置(不要忘记 sys.config)
6) 如下设置 .services 文件。该文件存储在 /etc/systemd/system/code_repository.service 中:
[Unit]
Description=Tonys Code Repository Daemon
[Service]
Type=simple
WorkingDirectory=/var/opt/code_repository
Environment=HOME=/var/opt/code_repository
ExecStart=/var/opt/code_repository/bin/start
Restart=yes
[Install]
WantedBy=multi-user.target
删除 -daemon 标志对于作为简单服务运行是必不可少的,因为简单服务会运行并且不会返回,除非它们失败。在此过程中使用 run_erl 允许 erlang 工具附加到守护程序以进行维护..