2010-12-17 84 views
1

我正在使用PHP和CodeIgniter(在LAMP堆棧上)構建一個新網站。一個要求是讓該設施同時運行同一網站的多個版本,例如一個「活」和一個「開發」版本; 根據需要,應該有一種快速安全的方式在版本之間前後切換。維護同一個PHP網站的多個版本

你能提出一個好的技術嗎?

UPDATE

附加要求:

  • 開發者應該能夠創建一個新的版本,很容易

  • 他/她用的是真人版的最終用戶並不會注意到,只有開發者可以擁有某種標籤

+0

本網站庫所依賴的頁面? live/dev數據庫?等等。恐怕需要更多的細節,否則人們會猜測並給你答案。 – Jakub 2010-12-17 16:42:37

+0

是的,這個網站是數據庫的依賴;兩個版本應該能夠共享相同的數據庫,但一個開發版本可能會強制架構更新,所以我認爲切換數據庫也應該是一個選項 – Adrian 2010-12-17 16:47:28

回答

2

通常使用配置文件。例如,

/live.domain.com/conf/config.php 

會保留特定於該應用程序實例的信息。您的應用程序絕不會從腳本中調用特定於實例的信息。也就是說,您不應該對DSN的路徑,電子郵件地址,圖像等進行硬編碼。所有這些信息都應包含在配置文件中。

一個例子可能是:

<? 
$dsn_user = 'live'; 
$dsn_pass = 'live_password_1234234cx'; 
$dsn_host = 'localhost'; 
$dsn_type = 'mysql'; 
$dsn_db = 'live'; 
$site_name = 'Bob's Store [live]'; 
$admin = '[email protected]'; 
$debug = 0 
?> 

然後,當你需要第二個站點的設置,您只需將您的版本控制系統的結賬(右?)到另一個目錄,並編輯配置文件以引用測試數據庫。

現場和開發站點共享相同的物理數據庫通常是不好的做法(不是數據庫引擎,它可以在單個MySQL數據庫服務器上託管50個站點,但每個站點都應該有自己的數據庫WITHIN MySQL )。

理想情況下,您將擁有一個安裝文件,可以加載一系列測試數據並快速填充新的基礎系統。

+0

我很高興每個版本都有不同的數據庫的想法;安裝文件也不錯 – Adrian 2010-12-17 16:59:22

0

只需爲開發版使用子域即可。 例子:

// prod version 
www.example.com 

// dev version 
dev.example.com 

真的是至關重要的,以他們分開,因爲在開發中一個漏洞可以被利用,可以帶來傷害的現場版。

+0

好主意,但我認爲我需要更靈活的方式 - 請參閱更新 – Adrian 2010-12-17 16:52:33

+0

您如何建議從v1到v2的「開關」應該被創建?我的意思是舊的現場版本被存檔或刪除,開發成爲現場和新的開發版本上傳? – Adrian 2010-12-17 17:00:31

+0

或者您的開發人員應該快速學習添加子域(dev1,dev2 ..),什麼是更好的選擇,或者您可以使用dev子域的子文件夾(dev.site.com/dev1,dev.site.com/dev2)。 – s3v3n 2010-12-17 17:01:28