【问题标题】:What are best practices for making Erlang releases?制作 Erlang 版本的最佳实践是什么?
【发布时间】:2011-07-23 15:11:48
【问题描述】:

我一直在查看 Faxien+Sinan 和 Rebar,Erlang OTP 的基本理念似乎是,在单个 Erlang 映像实例上安装应用程序和发布。保持发布自包含的最佳实践是什么?有没有办法打包发布,这样您就不必为要部署的机器修改站点?将所有依赖项收集到代码库中进行管理怎么样?

也许我违背了规律……我来自 Java 背景,“除了 JVM 没有预装”的理念似乎非常不同。

【问题讨论】:

    标签: build erlang dependencies release


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我将描述目前适用于我的方法,用于定期(通常是每天)向 EC2 上的少数实例发布:

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

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

      我对标准的 OTP 发布管理系统了解不多,只是看起来工作量很大。因为这似乎与快速部署背道而驰,所以我从未认真尝试过——尽管我确信它对其他项目有意义。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-02
        • 1970-01-01
        • 2012-09-11
        • 2010-09-09
        • 2011-06-07
        • 1970-01-01
        相关资源
        最近更新 更多