制作Erlang版本的最佳实践是什么?

5
我一直在了解Faxien+Sinan和Rebar,以及Erlang OTP的基本理念似乎是在单个Erlang镜像实例上安装应用程序和发布。那么如何保持发布的自包含性最佳实践是什么?有没有一种方法可以打包发布,使得您不必修改要部署到的计算机的站点?如何将所有依赖项收集到代码库中进行管理?
也许我与众不同...我来自Java背景,"除了JVM没有预安装任何东西"的理念似乎非常不同。
2个回答

4

在我看来,这个问题不能用几句话回答。你需要阅读一些包含文档的部分,特别是“Erlang/OTP System Documentation”(otp-system-documentation-X.Y.Z.pdf,其中X.Y.Z是版本号),或者查看书籍“Erlang and OTP in Action”,因为整本书都有一个“服务”的“示例”,从第一步开始使用Erlang/OTP概念并最终构建一个“发布”。

在我看来,这是目前最好的书,因为它不仅介绍了Erlang,还展示了OTP是什么以及如何将OTP用于项目。而且它不仅仅是一堆松散的样本,而是围绕着一个单一的项目构建的。


2
我将描述我目前在EC2上定期(经常是每天)发布到少量实例的方法:
  1. 使用rebar设置并将其提交到github中。
  2. 我的所有依赖项都在我的rebar.config文件中列出(它们也在github上)。
  3. 我的Makefile与我在这里描述的类似。
  4. 我的EC2映像只有一个普通版本的Erlang和默认未安装其他库。
  5. 要创建新节点,我启动一个实例,克隆git存储库,并运行make。这将获取我的依赖项并构建一切。
  6. 要更新代码,我执行git pullrebar update-deps。根据更改情况,我可能会重新启动节点或者通常会连接到正在运行的节点并重新加载更新的模块。作为您的项目的一部分,拥有启动和附加脚本会有所帮助。
您可以参考像webmachine这样的项目如何打包。
我不太了解标准OTP发行版管理系统,除了它看起来需要很多工作。因为这似乎与快速部署相悖,所以我从未认真尝试过-尽管我确信它对其他项目很有意义。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接