簡體   English   中英

2 台雲服務器,1 台開發,1 台產品; 什么是好的部署過程?

[英]2 cloud servers, one dev, one prod; what's a good deployment process?

目前為我的 web 應用程序使用 LAMP 堆棧。 我的 dev 和 prod 在同一個雲實例中。 現在我得到一個新實例,並希望將開發/測試環境移動到新實例,將其與生產環境分開。

它曾經是一個簡單的 Phing 腳本,可以將 SVN 導出到 prod 目錄(由我的 vhost.conf 指向)。 現在如何在環境分離的情況下進行良好的構建過程?

考慮將 SVN 存儲庫轉移到開發服務器,然后進行 ssh+svn 推送(這可以通過 Phing 實現嗎?)

這種設置的最佳/常見做法是什么?

更多信息:

我目前正在將CodeIgniter用於 MVC 框架,將Phing用於 localhost 部署的自動構建。 web 應用程序也得到了一些用Java編寫的 CRON 腳本的支持。

更新:

最終使用 Phing + Jenkins。 到目前為止工作良好!

我們使用 Phing 進行類似於您所描述的部署。 我們還為我們的項目使用 Symfony 框架(這對此並不重要,但 Symfony 支持不同環境的概念,所以這是一個優點)。

但是我們仍然需要為數據庫、前端控制器等生成不同的配置文件。

所以我們最終得到了一個包含 build.properties 的文件夾,它定義了不同環境的配置(在我們的例子中,也適用於我們將產品運送到的不同客戶)。 此文件夾使用 svn 外部鏈接到文件結構(同樣不是必需的)。

Phing build.xml 文件然后在命令行上接受一個屬性文件作為參數,從中獲取值並生成所有必要的配置文件、控制器和其他環境特定文件。 我們將配置存儲在模板文件中,然后使用 Phing 中的復制/過濾功能將模板中的占位符替換為特定值。

配置給定環境的整個任務可以像這樣簡單:

phing configure-environment -DpropertyFile=./build_properties/build.properties.prod

在您的構建文件中,您檢查是否定義了指定屬性文件的propertyFile屬性並使用<property file="./build_properties/build.properties.prod" override="true" />加載文件。 然后,您只需根據需要對值進行任何魔術。

您仍然可以使用 svn 檢出/更新並將所有生成的配置文件放入 svn 忽略(您將通過 phing 生成它們)。 我們實際上在 Phing 中使用了額外的步驟。 這些步驟最終產生了 Linux shell 安裝自部署 package。 這是在 Jenkins 中自動生成的。 We then send the package to our clients or the support team can grab the package from Jenkins and they can do the whole deployment just by executing it (we still prefer manual deployments to production servers) or Jenkins can deploy it automatically (for example to test服務器)。

如果需要,我很樂意寫更多信息。

我建議使用Capistrano (看起來他們在移動站點后沒有更新文檔)和railsless-deploy進行部署。 最終,您可能需要添加更多應用程序框並運行其他任務作為部署的一部分,因此選擇支持此功能的框架可以在未來為您節省大量時間。 我已經將 capistrano 用於兩個 PHP 部署(一個小一個大),雖然它並不完美,但效果很好。 它還處理所有代碼簽出/更新,將符號鏈接移動到位,並在出現問題時回滾。

配置好 capistrano 后,您所要做的就是:

cap dev deploy 
cap prod deploy

我為此探索的另一個選擇是fabric 雖然我沒用過,但如果要重新部署一個復雜的應用程序,我會考慮的。 界面簡單明了。

您可能會考慮的第三種選擇是龍門式(請原諒自我推銷),它仍處於開發的早期階段。 出於對使用 capistrano 在具有大量移動部件的環境中部署 PHP 應用程序的挫敗感,我一直在努力解決這個問題。 Capistrano 非常棒,適用於非 PHP 應用程序部署,但您仍然需要在代碼中進行一些操作以了解正在發生的事情並對其進行調整以滿足您的需求。 這也是為什么我建議讓面料看起來不錯的原因。

我現在使用類似的配置。 燈 + SVN + codeigniter + prd 和 dev 服務器。

我在 dev 上運行 svn 存儲庫。 我將 repos 檢出到 dev 域的根文件夾中。 然后在每次任何開發人員提交時使用提交后掛鈎來更新根文件夾。

當我們很高興並且已經完全測試了代碼我 ssh 到 prd 服務器並將 dev 根同步到 prd 根。

這是我針對不同配置的解決方案。 在根文件夾之外,我有一個 config.ini 文件。 我在 codeigniter constants.php 腳本中解析文件。 這意味着 prd 和 dev 服務器可以有單獨的設置,而無需它們在 repos 中。

如果您需要有關提交后、rsync 和 ini 代碼的幫助,請告訴我。

暫無
暫無

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

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