2011-03-26 128 views
4

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

也许我正在反对谷物......我来自Java背景,“没有预装但JVM”的理念看起来非常不同。

回答

3

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

恕我直言,这是目前最好的书,因为它不仅引入了Erlang,而且还显示了OTP是什么以及如何将OTP用于项目。这不仅仅是一个松散样本的集合,而是一切都围绕着一个项目而建立。

1

我将介绍,目前对我的作品进行定期(通常为每天)版本少数情况下,对EC2的办法:我建立了我的项目,螺纹钢

  1. ,并检查它到github上。
  2. 我所有的依赖都列在我的rebar.config文件中(它们也在github上)。
  3. 我的Makefile与我描述的here类似。
  4. 我的EC2图片只有erlang的常规版本,并且没有默认安装其他库。
  5. 要创建一个新节点,我启动一个实例,克隆我的git仓库,然后运行make。这将获取我的依赖关系并构建一切。
  6. 要更新我的代码,我做了一个git pull和一个rebar update-deps。根据更改的情况,我可能会重新启动节点,或者经常连接到正在运行的节点并重新加载更新的模块。它有助于启动并附加脚本作为项目的一部分。

查看如何打包webmachine这样的项目可能会有帮助。

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