2008-09-23 72 views
8

現在我有一個運行基本LAMP配置的開發服務器。生產服務器是slicehost。但我想知道將代碼/ db的實例推送到階段dev> stage> production的最佳方式是什麼。這是否與你如何創建階段有關?推動從開發/舞臺/測試環境到生產的網站更新的最佳實踐是什麼?

如何在不使網站失效的情況下進行操作?如果你不做負載平衡,甚至有可能嗎?

我知道這有些一般,我只是希望指出正確的方向。

回答

1

我想研究某種自動化的「構建」式燈具環境,在這種環境中,您有用於爲每個環境打包和準備發佈的腳本。

我認識到PHP沒有實際的構建,但您可以設置自動化來更改任何配置或設置問題,並將所有內容保存到準備好實施的文件夾中。

我不相信如果沒有負載平衡/ Web農場風格的環境,您可以完全消除停機時間。然而,在我的書中最簡單的方法是建立一個一致的代碼準備過程並多次測試過程。自動化將在那裏幫助。至於實際複製文件的行爲,以及我不知道使用FTP或任何方便的東西。也許提出一個加載消息。再次,這可以全部編寫出來。

最後要記住,因爲PHP沒有被構建,它可能對您有效地跟蹤現在和現在發生了什麼變化,並且只會移動這些文件之間的差異。有時候,這可能會增加不必要的複雜性。

2

我使用.htaccess創建一個「維護模式」jiffy,只有我的IP可以在更新時看到主站點。每個人都可以看到一條短消息,以便他們知道所有事情都應該在幾秒內恢復在線。

然後我:

  1. 進行任何DB編輯
  2. SVN導出/上傳文件
  3. 運行自動化測試,並給予儘可能快速查看,以確保沒有什麼可怕錯誤
  4. 還原了的.htaccess

這是一個給定的,但你應該測試的東西,就像你可以在本地膿前歡迎來到現場服務器。有些人使用兩臺實時服務器(如生產服務器上的加密名稱子域)作爲實時更新的測試區域。這可以減少主站點的實際停機時間。

我要強調的是,它不是推送更新到實時服務器是很重要的,無需關閉事前(特別是如果你使用的二進制文件ALA ASPNET),因爲用戶試圖使用該網站,而你更新會得到可怕的錯誤信息和你可能會被鎖定的文件。

+0

我會補充一點,htaccess的,換出,DB-編輯,svn籤/文件的上傳和自動化單元測試都可以編寫腳本,以便更新發生了,要快得多。 – Oli 2008-09-23 19:14:11

1

我不知道這是個好主意,但是如何從源代碼管理系統自動簽出?也許有幾個開發部門 - 測試出血端,開發維護/小改進,生產代碼生產。只要開發穩定,就將其合併到生產分支中,並由生產機器定期自動檢出。

0

只要將文件推送到所有Web服務器,我就會發現很好的舊的robocopy能做到這一點。當然,我的開發/舞臺/產品環境完全相同。只需建立一個臨時頁面,告訴用戶該網站會馬上回來。

0

現在我們使用與焦油了我們修改過的文件的配置文件的一系列shell腳本,他們scp將集羣中的每個服務器,然後解壓縮他們,一旦他們在那裏。這種方法當然有其缺點,我們正在考慮一種方法,其中每個服務器成員都安裝了一個svn客戶端,並且一旦我們標記新版本,我們就會將生產服務器上的工作副本切換到該新標記。當然,我們現在在我們的維護時間內發佈,因此我們不必爲我們的用戶做任何特殊的事情(無論如何他們都會看到維護頁面)。

0

我在我的核心配置的選項,以允許訪問該網站或預設的URL列表我也可以把所有用戶(和停止用適當的HTTP代碼的任何API流量)。

這些URL是鏈接到靜態html文件,向用戶解釋發生了什麼。

啓用此功能後有到數據庫或任何文件中沒有請求的所有請求被髮送到HTML文件之前,可以發生,給了我一個「清晰的」太空部署任何更新。

0

apache螞蟻與svn和ftp的任務爲我支付賬單。甚至有人用ANT來做數據庫分析,但我傾向於親自觀察這些數據。一旦你有一個乾淨的,並推動構建所有你的位置的FTP,你會驚訝於它是多麼容易。

相關問題