2010-01-02 86 views
6

我正在研究一個運行在LAMP棧(Linux Apache Mysql PHP)上的Web應用程序,並希望改進我的工作流程。我該如何改進我的開發和部署策略?

我有3個環境:

  1. 我的本地機器AKA我發展環境
  2. 一個分期帳戶我的專用服務器上,這樣我就可以測試Web應用程序
  3. 一個生產我的專用服務器上的帳戶

我在本地計算機上進行所有開發,並使用位於專用服務器上的Subversion服務器。我設置了一個鉤子腳本,以便每當我提交時,我的「登臺」帳戶就會使用新代碼進行更新。

偶爾我會確保暫存帳戶中的一切正常,並通過小腳本將更改推送到我的生產帳戶。

此作品不夠好,在大多數情況下,但有幾個刺激的:

  • 我的域名是硬編碼在幾個地方,使其費時環境之間進行切換。我可以手動修改我的主機文件,但它不是很快,它不適用於同一臺服務器上的2個帳戶(prod/staging)。

  • 我沒有辦法在所有三種環境中保持數據庫的最新狀態。我可以在所有環境中使用相同的數據庫,但我必須冒險破壞生產環境。

所以,我的問題是:我能做些什麼來緩解這些問題?

更新:硬編碼的域問題是由第三方軟件引入的,因此,「不硬編碼」目前不是一種選擇。

+0

Olivier:我編輯了你的問題,試圖使它更具體。 SO不是一個論壇,對於「對此有何評論」往往效果不佳?問題;我認爲你做識別您的最後一個段落的具體問題的一個好工作,所以試圖強調那些(也改變標題的注意力從對軼事招攬) – Shog9 2010-01-02 19:49:09

+0

誰能PLZ告訴我什麼是一般的慣例和意義與dev,stg和prod相關聯。似乎我對他們的意思感到困惑(或者我似乎一直在使用與其他人不同步的慣例/語義)。由於 – 2010-01-02 20:05:56

+0

我相信這是通常的慣例: 開發:開發商 分段環境:公共環境的建議Darell – 2010-01-02 22:47:45

回答

1

理想情況下,您希望分段作爲生產的精確副本。這樣,你在看到你所看到的東西時可以相當有把握地相信你會在生產中看到。當您提交時自動推送到分段不會執行此操作,因爲您通過提交引入的任何錯誤都會立即發送到分段。

你可能想要的是設置另一個環境並稱之爲測試。這將是你自動提交的地方。使用該環境進行QA,然後可以打包代碼並將其推送到最終測試階段。如果一切順利,然後將包推到生產。

至於域名問題,我建議不要硬編碼它們,如果你可以擺脫它。或者至少使用不同環境的子域,以便通過編程方式更容易地確定您所處的環境。

爲了讓您的數據庫在各種環境中保持最新狀態,您可能需要考慮定期使用該轉儲更新您的暫存,測試和開發環境。一天一次應該工作。這樣您就可以開發和測試用戶在生產中看到的內容。

+0

感謝:環境質量保證 生產(推修改PROD之前)。我明白需要一個與生產環境完全相同的環境,但現在,由於我是我的應用程序的唯一開發人員/測試人員,因此我不太可能在測試時提交錯誤。對於域名問題,我沒有真正的權力,因爲我使用的第三方軟件負責:/。我會看看子域名是否正常工作。 – 2010-01-02 19:44:32

1

關於你的最後幾個百分點,明顯的解決方案似乎是(1)不要硬編碼域中的任何地方,或者如果必須,至少關把它分解成不更新一個「本地設置」文件通過SVN; (2)編寫腳本以同步數據庫(即將生產數據複製到分段和/或您的本地環境,而不是相反)並偶爾運行它。