2009-07-13 114 views
3

我目前在一家網上商店工作,幾乎沒有正式流程和一百萬個PHP網站,包括棘手的東西,如自定義CMS和購物車的代碼。沙盒網站的最佳做法?

我們正在努力改善事情。我正在推動CVS/SVN。

我的問題是,沙盒網站工作的最佳做​​法是什麼?我們在LAMP堆棧上。我們的一些網站已對當前網域進行硬編碼(或用戶輸入的鏈接),因此設置不同的域名(如preview.mysite.com)會斷開指向www.mysite.com的鏈接。如果我們開始應用迴歸測試,也許這些領域應該是統一的測試?這總是可以通過本地主機條目完成。

因此,考慮到我們有很多網站,最好有一個過程在適當的沙箱中進行預覽。想知道這將如何與SVN/CVS週期整合。

我只是在尋找行業最佳實踐,因爲我們正試圖去那裏。如果這意味着將一個網站克隆到一個額外的服務器,那就這樣吧。

回答

1

所以是的,你應該有第二個STAGE服務器。我所做的就是將我的代碼放入我的開發箱中的CVS中,並隨着我一起進行常規提交。當我準備推一個版本的「STAGE」服務器,我通過我希望舞臺上,並標記它們STAGE文件:

CVS標籤-F STAGE

然後我去STAGE服務器跟STAGE標誌的更新來獲得文件的舞臺版:

CVS了-r STAGE

這也設置了粘性標籤上這些文件「STAGE」,所以在未來,我可以當我在舞臺服務器上進行更新時,請將STAGE標籤關閉:

個CVS了

最後,當我測試我的代碼階段服務器上,我把它滾到使用rsync生產服務器...

我們有幾個開發人員一起工作,從而保持一個穩定的舞臺版了可能會變得棘手。在這種情況下,如果我只是對一個或兩個文件進行小改動,我就會單獨將它們scp到生產服務器上。

最後,爲了確保我知道我的生產服務器上有什麼,一個或多個文件關閉到生產服務器,我將我的舞臺服務器上的所有文件都標記爲RELEASE,並且還將其標記爲RELEASE20090713或當前日期。這樣我就可以根據需要移動快照。但是請注意,這不更新粘標籤,所以我經常老

CVS了

階段服務器上仍然得到我的最新階段的文件。

現在在你的情況下,只要硬編碼的URL去...你已經知道了...壞壞壞...所以修復它們,你去...但你可能能夠使用Apache的URL重寫在STAGE上重寫URL以與自定義TCP端口進行通信。

如果您有像Cisco路由器這樣的智能網絡設備,您可以將其設置爲爲您的IP執行PAT(端口地址轉換)。端口80可以轉發到您的常規生產網絡服務器,端口8080可以轉發到您的STAGE服務器(它的端口80)..然後,你所做的就是在你的STAGE服務器上進行apache do URL重寫,並將8080附加到它看到的所有主機名。現在,您的所有帖子和鏈接都將轉到正確的STAGE服務器,並且您的apache配置也可以完全相同。

1

關於硬編碼(或用戶輸入)域名:您可以將域添加到您的hosts file。這應該可以在開發和預覽期間解決您的問題。您的瀏覽器將檢索www.mysite.com的IP,並在hosts文件中找到127.0.0.1或預覽網站的IP。棘手的部分是,通過查看瀏覽器中的URL,您無法確定您是否正在查看生產站點。 (該ShowIP addon爲Firefox可以幫助你在這裏。)

關於CVS/SVN:我真的建議你去SVN。使用CSV並不困難,但有一些優點(例如可以重命名)。有關更多信息,請參閱this question

至於沙盒中的預覽,我們是這樣做的:我們在trunk(或分支上,但其餘部分幾乎相同)上完成大部分開發。一旦我們準備將其展示給客戶,我們創建一個tag。這個標籤用於更新預覽服務器。如果客戶不滿意,我們會在主幹(或分支)上開發更多功能,創建新標籤,使用標籤更新預覽等。一旦客戶滿意,我們就可以使用預覽中運行的完全相同的標籤來更新生產服務器。這樣我們可以確保預覽和生產服務器具有相同的代碼庫。

相關問題