2009-01-01 174 views
12

我想爲我用PHP編寫的新網站設置兩個環境。一個 - 開發新版本並測試它們。第二次生產,我的實際穩定版本的網站將可用。PHP中的開發和生產環境

PHP中的網站將包含許多PHP和其他文件(JS,圖像等)。所以我認爲如何以最好的方式準備這個環境,以便輕鬆實現源代碼管理,將網站從開發環境快速複製到生產環境,併爲網絡上的人員提供開發版本,以便他們能夠看到實際的工作進度並建議更改或報告錯誤。

你能否給我一些建議,從哪裏出發呢?有沒有關於這方面的書籍(從實際的角度來看?),或者您有經驗或技巧要注意什麼,以及讓這個過程變得簡單並且對我和其他參與開發新項目的人來說很重要。

回答

3

如果可能的話,我更願意在開發者本地框上進行開發。如果涉及其他開發人員,則可能需要設置版本控制,以便數據庫架構,javascript,css和php代碼可以很容易地簽出並設置在開發人員的個人框中(假設他們具有正確的LAMP/WAMP設置)

我也看到過,人們在服務器上維護一個測試網站,在那裏進行主動開發。我會避免這種情況進行積極的開發,但將其用於最新簽入代碼(最新版本)的黑盒測試。

一旦您的測試網站檢出,那麼它將代碼從您的版本控制導出到實時網站的位置。有了svn,你可以用svn update更新實時代碼,指定一個修訂版或標籤來指示當前的實時版本。

我會進一步建議保留一些設置,如db訪問/用戶名/密碼,在一個單獨的不受版本控制的包含文件中。保持這個地方,讓開發人員在他們的PC上插入對本地數據庫的訪問權限。在您的服務器上,插入您需要訪問數據庫的所有內容。這應該是非常簡單的代碼(定義了一些變量),所以沒有版本控制應該不是什麼大問題。如果你喜歡,你可以版本控制一個模板版本,但我不會把真正的數據庫信息放入版本控制。

6

我用這樣的設置工作,所以我可以給你一些關於如何做到這一點的提示。我一直這樣做了一段時間,在這裏和那裏找出糾結的問題,並且覺得這是一個我可以誠實地說的設置是非常富有成效的。

小記:我在OSX上工作,所以如果你是linux/windows用戶,使用的特定應用程序可能與你有點不同。

我使用MAMP(www.mamp.info)在我的Mac上運行一個生產「服務器」,使用PHP和MySQL輕鬆爲我提供Apache服務器。您可以使用類似XAMPP的工具或手動安裝所有內容,這取決於您。

然後我有我的活服務器,我的網站和客戶網站的託管。對於每個新的網站項目(讓我們以abc.com爲例),我創建了一個名爲staging.abc.com的子域,我在其中進行測試。在實際上線之前測試完全相同的硬件和軟件是件好事。

我使用Subversion(或者簡稱SVN)來滿足我的版本需求,並且增加了額外的好處,只要我將最新版本發送到SVN服務器,我就可以輕鬆添加'鉤子'來自動更新在線生產服務器。SVN還允許您輕鬆地與同一項目上的多個人一起工作。有關SVN以及如何使用它的更多信息,我建議您在這裏找到很棒的(免費的)在線書籍:​​

簡而言之:我在本地與MAMP一起工作,爲我提供本地「工作」服務器。之後,我在staging.abc.com上的在線測試中查看是否一切正常,可能允許其他人看到該項目(例如,如果您希望客戶端看到正在發生的事情),以及之後我實際上將該項目發佈到實際的域名上。

還有很多事情可以做,以優化您的工作流程,但這應該讓你開始。

希望這會有所幫助!

-Dave

13

對於初學者使用以下三種:

  1. SVN - 這會給你的源代碼控制,並允許您跟蹤更改。你可能想要在這個之上獲得圖形用戶界面(烏龜很受歡迎),以減輕學習的難度。

  2. RSYNC - 這將允許您使用單個命令簡化本地和遠程站點之間的同步。 RSYNC使用diff引擎進行同步,這意味着增量同步在幾秒鐘內發生。在強烈的節目編排過程中,我有時會在一小時內同步4-5次,因爲我可以如此輕鬆地快速地推出很小的變化。

  3. MySQLDump - 這將允許您從生產站點導入/導出數據。我通常每週都會這樣做一次,以便在本地服務器上獲取生產數據,這不僅爲我提供了本地備份,還讓我可以在本地測試環境中查看生產數據。

僅僅這三個就能爲您節省大量時間,並且可以讓您縮放。稍後,您可以查看自動構建工具,單元測試框架,xml文檔框架等來構建一些嚴重的產品。

+0

爲什麼rsync如果你能從服務器上的SVN檢出你當前的修訂版? – 2009-02-03 10:49:34