2010-10-23 27 views
4

不幸的是,我從來沒有一位高級開發人員或導師向我展示一些最佳實踐。所以我使用WAMP在Windows計算機上開發網站(php/mysql),我在生產服務器上的隱藏(密碼受限)文件夾中進行測試,並最終將網站移至生產文件夾。什麼是PHP開發更有效的dev/test/prod環境設置?

我想有一個更流暢/實用/防錯的設置,以便從開發>測試>生產,沒有打嗝。

重要的點/問題是(你也許可以想出更多):

  • 使用
  • 易於
  • 易於開發/測試修改後的網站是活的(避免對生產測試網站)
  • 本地/測試/產品(錯誤報告,Apache設置等)之間沒有服務器區別
  • 避免數據庫差異的問題(例如:如果添加了列,您如何將它們添加到prod數據庫?
  • 您是否跳過測試環境,或者對其進行開發和測試?
  • 等...

你們如何開發PHP/MySQL的網站?

你使用SVN嗎?你使用IDE嗎??你使用虛擬機嗎?

謝謝。

回答

1

我的開發過程還是有點粗糙,我也期待着答案。

我爲大型項目做的事情是在我的Linux桌面和我的Windows桌面上設置一個git回購。如果可能的話,我會在本地測試作爲完成的組件,我將把我的更改推送到中央託管的git倉庫(通常爲私人git hub帳戶),或者將他們拖到開發(我將開發人員設置爲回購倉庫並從ssh中抽取)。所有MySQL更新都存儲在更新文件中,並且我使用netbeans進行開發(儘管我使用了eclipse和其他工具,netbeans只適用於我)。

2

這裏是我的建議:

  • 有一個開發環境純粹是爲了發展。根據您掌握的資源保留舞臺和/或現場環境。臨時環境是您測試的地方,並確保您的應用程序沒有嚴重問題。現場環境基本上是您的生產設置。事實上,舞臺和現場應該始終如一。重現暫存問題並在不修改代碼的情況下執行一些故障排除很有用。請記住,這也適用於任何關聯的數據庫。

  • 使用SVN或某種形式的版本控制。這樣,如果有一天世界會崩潰,你將有能力回退到任何穩定版本的應用程序!

  • 如果您正在使用Linux環境,則可以編寫簡單的腳本來將設置與最新(STABLE)開發環境同步。理想情況下,您需要進行開發並進行單元測試,以確保每個設計都能正常工作。運行腳本並使用最新的代碼庫更新暫存環境。對舞臺進行功能測試,確保一切按規格運行。運行另一個腳本,並將最新的更改轉移到實時/生產環境中。

4

這是一種常見的問題 - 這就是爲什麼最有經驗的開發者不要回復 - 一般在炎熱的意見火焰戰爭結束了。所以,小心一點。

但是,你似乎是一個不錯的傢伙,希望走上正確的道路,尋找一些非常有效的途徑。幾年前,我對此有點認識。好吧,首先要記住的是:不要盲目追隨任何人。任何人都可以聲稱自己是一個偉大的主人,但你可以找到至少10.000個人遠勝於完全匿名。因此,對於您所聽到的任何事情,請執行以下操作:傾聽,測試並獲得您自己的結論。如果只有一條黃金法則就是這樣。在你自己的結論出現之前,其他一切都很糟糕。你是你的最終裁判。

這就是說,讓我開始爲最新的問題之一:IDE。你應該使用什麼?你應該使用你可以製造更多的東西,讓你更舒適。 Netbeans,Eclipse,VIM,Notepad ++,記事本,gedit,kate,quanta plus ....你有很多選擇,每個人都有自己的觀點。測試你認爲有趣的事情,然後繼續你選擇的那個。

對於任何方法論,框架或工具也是如此。使用,學習並獲得批評。堅持讓你更舒適,更有生產力的那種。

開發環境也是一樣。如果您在Windows,Mac或Linux上開發,那麼無關緊要。重要的是獲得你需要的資源。您需要的資源通常可以從一個項目變爲另一個項目。

因此,開發某個項目的最佳環境是反映生產運行的真實環境。如果使用PHP 5.3 OOP資源開發並最終獲得PHP 5.1,該怎麼辦?這纔是重點。最終的環境是誰告訴你什麼是最好的發展環境,而不是相反。

對於測試,您應該跟蹤一個策略。我在談論IBM作爲一個5年的測試團隊領導。這是因爲有很多測試可以執行,但並不是所有的測試都可以對當前項目真正感興趣。

首先根據項目需要決定要測試的內容。安全性,性能,用戶界面顯示,用戶界面效果,錯誤處理,負載和平衡,可用性,可訪問性... ...

記錄你要測試什麼(什麼時候,哪裏,成功的標準)成功和失敗的報告。

正如我之前所說,項目需要是什麼引導你每一步。測試沒有什麼不同。如果你只需要檢查不同瀏覽器上的顯示器,可以隨意使用不同的機器或虛擬機。

通常這就足夠了。但如果項目需要性能或負載測試,那麼您將需要特定的負載測試軟件。我不會深入研究這個主題,因爲它非常廣泛。

找到一個理想的流程和工具匹配需要一些時間,並且在實現這個之後,您將始終發現一個新的測試工具或一個過程,讓您節省一點時間。就是這個。

+0

好評,完全同意! 我可以添加的一件事是學習如何在apache中設置虛擬域。遠離http:// localhost/project。這是純粹的邪惡!使用:http://myproject.local – kodisha 2010-10-24 00:00:23

+0

請問爲什麼localhost/project不是一個好主意..? – pnichols 2010-10-24 02:51:15

1

我認爲你在所有重要的點上。我個人,我

  • 在生產服務器和我的開發系統上運行相同的操作系統和服務器軟件。相同版本的PHP,Python,MySQL,Django等。
  • 我不經常更改DB結構。我在dev上設置了數據庫表。系統,然後使用mysqldump來生成表創建SQL。我使用mysql <name_of_sql.file將它安裝在服務器上。當我做出更改時,我備份數據庫,然後通過命令行界面進行操作。對於PHP,我只是將Doctrine用於表結構/遷移支持。
  • 我在Kate(Linux),Komodo Editor(Mac)或Notepad ++(Windows)中編寫所有內容。我不太喜歡IDE,我更喜歡點對點的文本編輯器。
  • 我將文件上傳到暫存目錄,並在將它們複製到實際位置之前使用diff進行檢查。

這不是最複雜的設置,但它對我來說工作得很好。我是只有開發工作我參與的項目,這可能解釋了很多。最重要的部分,這不僅僅是個人偏好,是第一部分 - 將您的開發/測試系統儘可能緊密地與生產系統相匹配,包括操作系統。