2010-02-22 155 views
9

在開發PHP應用程序時,最好先開發一個服務器或測試一個服務器,然後將一切準備就緒的服務器放入其中。設置開發服務器

好的,但是怎麼樣?

如果您通過託管公司託管,您如何設置自己的開發服務器以進行測試,以模擬所有LAMP設置作爲您的實時服務器?因爲如果他們不同,那麼測試一個與活的不相同的測試,是否會破壞目的?

它是否更好地通過同一託管公司使用另一臺服務器,並要求他們讓開發人員和活動人員擁有完全相同的設置?

什麼是最好的工作流程,用於檢查「活動服務器」中的文件在「開發服務器」上工作,然後將它們檢入到活動服務器中?

謝謝!從我的日常工作

回答

14

兩點:

  • XAMPP是在Windows上建立的Apache/MySQL的/ PHP解決您的一站式服務。我用它開發並部署到Linux機器上,沒問題。

  • 如果你想建立一個Linux環境中的主服務器或虛擬機上,我問了一個問題,前一段時間您可能會感興趣:Pre-installed Linux for Web Developers?

它是更好地使用另一臺服務器通過同一個託管公司,並要求他們讓開發人員和活着的人員擁有完全相同的設置?

如果你可以買得起第二臺服務器,它可能是最好的選擇。另一方面,您可以隨意升級和擺弄本地機器,而這隻需要第二臺租用服務器的長期成本的一小部分。如果有疑問,我會去當地的一臺機器。

別忘了PHP是一種非常便攜的語言。如果您沒有使用任何特定的命令行工具或完全異常的擴展,使PHP應用程序跨Linux甚至在Windows上工作是一些設置和細節的問題,但不是什麼大不了的事情。

什麼是最好的工作流程,用於檢查「活動服務器」中的文件在「開發服務器」上工作,然後將它們檢查回到活動服務器中?

在這個領域有很多很多的意見和做法。就我個人而言,無論我在哪裏使用它,以下工作流程都是理想的 - 我仍然在爲所有項目和所有客戶實現這一目標。通過

  1. 編輯本地的文件在IDE

  2. 上傳到開發服務器內置IDE

  3. 測試開發服務器

  4. 上一旦功能測試和工程的FTP功能在開發服務器上(即「完成」),檢查整個包到Subversion(或其他)存儲庫中

  5. 在實時服務器上,建立腳本檢查存儲庫中的最新版本,將其下載到具有版本號的目錄中,完成後,將指向前一版本的符號鏈接更改爲最新版本。

這樣,每次改變您對真實環境中的版本控制系統記錄下來,並恢復到以前的版本是,如果秒的問題。對我來說,與使用純FTP到處相比,這是一個巨大的緩解。

也可能是有趣的問題:Setting up a deployment/build/CI cycle for PHP projects

+0

注意:如果你有一臺Linux機器,不需要XAMPP,大多數Linux都會預先配置好(或者可以通過他們的軟件包管理工具輕鬆進行配置)。 – 2010-02-22 21:17:34

+0

步驟1-3我完全理解,我沒有任何版本控制系統的經驗,所以我將在第4步中向Google Subversion提供信息。但是,您能否指出我將在何處解釋如何實現第5步?謝謝!!! – 2010-02-22 21:41:26

+0

當我檢查時,XAMPP和其他堆棧做了一個垃圾工作。他們應該建立一個_development_環境,但他們都沒有爲開發設置PHP。 display_errors應該是On,但事實並非如此。使用它們的人最終會問這些愚蠢的問題。 – 2012-10-13 20:33:46

3

您可以通過phpinfo()檢查所有生產服務器的設置,並將其複製在你的開發環境,沒有必要讓他們在同一個供應商。

我通常會將代碼提交到源代碼管理,並在生產環境中籤出,通過.htaccess隱藏所有存儲庫信息,例如,請參見here

另一個(不太推薦的)選項是在開發機器上安裝你的主源代碼,一旦它準備好了FTP,就有各種免費工具可以上傳更改後的文件。

+1

一個這樣的工具是FileZilla。上傳文件時,可以選擇是否覆蓋文件,覆蓋不同的文件大小,或者覆蓋源文件是否更新 – Tarka 2010-02-22 21:08:19

2

至於服務器端,你有多種可能性。當你有Apache時,你可以使用vHosts,有兩個不同的DocumentRoots:一個用於live版本,另一個用於開發。 或者您可以在您的本地機器上安裝開發環境,然後在您的專用服務器/網絡空間上進行實時(+臨時)任何操作。

在我們目前的項目,我們有一個三層系統:

開發,分期和生活。分期和生活幾乎是一樣的,所以我可以消除從開發到分期的任何問題。它在啓用之前爲我提供了另一個安全層,並最終注意到出現了問題。

考慮到推出的工作流程,您應該創建一個應用程序配置,您可以在其中定義幾個基於URL,已定義的環境變量或其他內容自動選擇環境的應用程序環境(開發和生產)。因此,例如,在Zend Framework中,這種配置驅動的行爲被嵌入到您的應用程序中。在您的config.ini文件,你有一個模板,看起來像這樣:

[production] 

[staging : production] 

[testing : production] 

[development : production] 

在那裏,你可以定義不同的選項,讓說,你的數據庫連接即

因此,當您在開發機器上檢查您的更改並將其轉換到實時系統上時,您無需更改配置。它應該只是工作。

0

就工作流程而言,這通常是小型站點發生的情況。不過,根據項目的規模,使用版本控制如Git或Subversion可能是個好主意。

0

只需要託管公司爲您設置兩個相同的託管環境,您不需要去任何地方。他們大部分時間都具有最新版本的php,mysql和apache。我在一臺Linux機器上開發,已經安裝了燈管設置,所以我的工作流程非常流暢,我使用帶提交後掛接的svn上傳到實時服務器。 如果您之間你「開發」服務器和託管服務器都擔心不兼容,最容易做的事情是做一個的phpinfo文件,

<?php phpinfo(); ?> 

,並檢查您的託管服務器不禁止任何特殊功能你可以在你的開發服務器上使用(這很少有託管公司阻止重要的事情發生,如果他們這樣做,你可以很容易地發送支持電子郵件,99%的時間他們會幫助你啓用任何你需要的細節。就像設置你的開發環境一樣,我會走下去抓取virtualbox,並安裝ubuntu,找到一個使ubuntu成爲web服務器的教程(嚴重的只有幾個apt-get命令),你會用吸氣!