簡體   English   中英

沙盒網站的最佳做法?

[英]Sandboxing website best practices?

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

我們正在努力改善一切。 我正在推動CVS / SVN。

我的問題是,沙盒網站工作的最佳做​​法是什么? 我們在LAMP堆棧上。 我們的一些網站有當前域的硬編碼(或用戶輸入的鏈接),因此設置一個不同的域,如preview.mysite.com將打破指向www.mysite.com的鏈接。 如果我們開始應用回歸測試,那么這些域應該是統一的測試? 這總是可以通過本地主機條目來完成。

因此,考慮到我們有很多站點,最好有一個進程來始終在適當的沙箱中進行預覽。 想知道這將如何與SVN / CVS循環集成。

我只是在尋找行業最佳實踐,因為我們正努力實現這一目標。 如果這意味着將站點克隆到額外的服務器,那就這樣吧。

所以是的,你應該有第二個STAGE服務器。 我所做的是將我的代碼放入我的開發盒中的CVS,並在我進行時定期提交。 當我准備將版本推送到“STAGE”服務器時,我會瀏覽我想要STAGE的文件並將它們標記為STAGE:

cvs標簽-F STAGE

然后我轉到STAGE服務器並使用STAGE標志進行更新以獲取STAGE版本的文件:

cvs up -r STAGE

這也將粘性標記設置為這些文件的“STAGE”,因此將來我可以在我的舞台服務器上進行更新時關閉STAGE標記:

cvs up

最后,當我在STAGE服務器上測試我的代碼時,我使用rsync將其滾動到生產服務器...

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

最后,為了確保我知道生產服務器上的內容,在將文件或文件發送到生產服務器之后,我將我的舞台服務器上的所有文件標記為RELEASE,以及RELEASE20090713或當前日期。這樣我就可以在需要的時候通過時間移動快照。 請注意,這不會更新粘性標簽,所以我的常規舊

cvs up

在舞台服務器上仍然獲取最新的STAGE文件。

現在就你的情況而言,就硬編碼的網址而言......你已經知道......糟糕的壞事......所以你要去修理它們......但是你可以使用apache URL重寫來重寫STAGE上的URL與自定義TCP端口通信。

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

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

關於CVS / SVN:我真的建議你去SVN。 它比CSV更難使用但具有一些優點(例如可以重命名)。 有關更多信息,請參閱此問題

至於沙盒中的預覽,這就是我們所做的:我們在trunk (或在分支上)進行大部分開發,但其余過程幾乎相同。 一旦我們准備好向客戶展示,我們就會創建一個標簽 此標記用於更新預覽服務器。 如果客戶不滿意,我們會在主干(或分支機構)上開發更多內容,創建新標簽,使用標簽更新預覽等。一旦客戶滿意,我們會使用在預覽上運行的完全相同的標簽來更新生產服務器。 這樣我們就可以確保預覽和生產服務器具有相同的代碼庫。

暫無
暫無

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

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