Erlang发布最佳实践?

时间:2011-03-26 20:10:31

标签: build erlang dependencies release

我是Erlang noob,我一直在检查Faxien + Sinan和Rebar,而Erlang OTP的基本原理似乎是,在单个Erlang图像实例上安装应用程序和发行版。保持版本自包含的最佳做法是什么?有没有办法打包发布,以便您不必修改您部署到的计算机的站点?如何将所有依赖项收集到代码库中进行管理?

也许我反对这个问题......我来自Java背景,“没有预先安装但JVM”的理念似乎非常不同。

2 个答案:

答案 0 :(得分:3)

恕我直言,这句话无法用几句话来回答。您应该阅读所包含文档的某些部分,尤其是“Erlang/OTP System Documentation”(otp-system-documentation-XYZpdf,XYZ是版本号),或者查看“{{3}”一书。 “因为在整本书中,有一个”服务“的例子,其中包含来自第一步的不同”部分“,使用Erlang / OTP概念并最终构建”发布“。

恕我直言这是目前最好的书,因为它不仅介绍了Erlang,还展示了OTP是什么以及OTP如何用于项目。它不仅仅是一个松散样本的集合,而且所有内容都是围绕一个项目构建的。

答案 1 :(得分:1)

我将描述目前适用于我的常规(通常每天)发布到EC2上的少数实例的方法:

  1. 我用钢筋设置我的项目并将其检入github。
  2. 我的rebar.config文件中列出了所有依赖项(它们也在github上)。
  3. 我的Makefile与我所描述的here类似。
  4. 我的EC2映像只有erlang的常规版本,默认情况下没有安装其他库。
  5. 要创建新节点,我启动一个实例,克隆我的git存储库,然后运行make。这将获取我的依赖项并构建所有内容。
  6. 要更新我的代码,请执行git pullrebar update-deps。根据更改的内容,我可能会重新启动节点,或者,我经常会附加到正在运行的节点并重新加载更新的模块。它有助于启动和附加脚本作为项目的一部分。
  7. 查看像webmachine这样的项目的打包方式可能会有所帮助。

    我不太了解标准的OTP发布管理系统,除了看起来很多工作。因为这似乎与快速部署相反,我从来没有认真考虑过 - 尽管我确信它对其他项目有意义。