簡體   English   中英

部署使用Snap框架的Haskell代碼

[英]Deploy Haskell code that uses the Snap Framework

您以穩定的方式在Snap中部署Haskell代碼以進行生產的經驗是什么?

如果編譯在服務器上失敗,那么我想中止部署,如果編譯成功,那么我希望它關閉快照服務器並啟動新版本。

我知道有很多方法。 從rsync到git-hooks(git pull都是一場噩夢)。 但我想聽聽您的經驗。

在我工作的地方,我們使用Happstack並在Ubuntu Linux上進行部署。 實際上,我們對Web應用程序和所有依賴項進行了debian化,然后在自動生成器中對其進行了構建。

要實際安裝在服務器上,我們只需運行apt-get update && apt-get install webapp-production

該系統的優勢在於,它使所有開發人員都可以輕松地針對相同版本的依賴項進行開發。 而且您知道所有源代碼都已正確檢入,並且可以在任何位置重新構建,而不僅僅是在一台特定機器上。 此外,它提供了一種在需要時從黑客為庫制作補丁的機制。

缺點是apt-get和cabal-install的配合不佳。 您要么必須通過apt-get構建所有內容,要么必須通過cabal-install進行所有操作。

這就是我們的工作。 首先,我們的服務器和開發機器都是相同版本的ubuntu。 我們在任何我們想使用的操作系統上編寫代碼,測試等,當我們准備推送時,我們就可以在開發機器上進行構建。 只要編譯干凈,我們就停止(前端服務器數量)/ 2,重新同步resources目錄和二進制文件的新副本,然后使用腳本將其備份。 然后重復另一半。

我認為,如果您可以輕松地僅傳輸二進制和靜態資產,前提是外部庫(數據庫,圖像等)的版本與以下版本相匹配,那么您應該質疑在前端服務器上維護完整工具鏈的邏輯。建立環境。 哎呀,只要操作系統和庫的發行版匹配,您就可以再次使用virtualbox實例進行最終編譯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM