2011-03-26 179 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發佈管理系統,除了看起來像很多工作。因爲這似乎與快速部署相反,我從來沒有給過它認真的嘗試 - 儘管我確定它對其他項目有意義。