我正在使用PHP和CodeIgniter(在LAMP堆棧上)構建一個新網站。一個要求是讓該設施同時運行同一網站的多個版本,例如一個「活」和一個「開發」版本; 根據需要,應該有一種快速安全的方式在版本之間前後切換。維護同一個PHP網站的多個版本
你能提出一個好的技術嗎?
UPDATE
附加要求:
開發者應該能夠創建一個新的版本,很容易
他/她用的是真人版的最終用戶並不會注意到,只有開發者可以擁有某種標籤
我正在使用PHP和CodeIgniter(在LAMP堆棧上)構建一個新網站。一個要求是讓該設施同時運行同一網站的多個版本,例如一個「活」和一個「開發」版本; 根據需要,應該有一種快速安全的方式在版本之間前後切換。維護同一個PHP網站的多個版本
你能提出一個好的技術嗎?
UPDATE
附加要求:
開發者應該能夠創建一個新的版本,很容易
他/她用的是真人版的最終用戶並不會注意到,只有開發者可以擁有某種標籤
通常使用配置文件。例如,
/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 )。
理想情況下,您將擁有一個安裝文件,可以加載一系列測試數據並快速填充新的基礎系統。
我很高興每個版本都有不同的數據庫的想法;安裝文件也不錯 – Adrian 2010-12-17 16:59:22
這裏是一個解決方案,如果你想多發點下一個笨安裝運行: http://www.askaboutphp.com/88/codeigniter-setting-up-multiple-sites-on-one-install.html
正如我提到的,如果你有你需要記住這一點在設置數據庫。
只需爲開發版使用子域即可。 例子:
// prod version
www.example.com
// dev version
dev.example.com
真的是至關重要的,以他們分開,因爲在開發中一個漏洞可以被利用,可以帶來傷害的現場版。
本網站庫所依賴的頁面? live/dev數據庫?等等。恐怕需要更多的細節,否則人們會猜測並給你答案。 – Jakub 2010-12-17 16:42:37
是的,這個網站是數據庫的依賴;兩個版本應該能夠共享相同的數據庫,但一個開發版本可能會強制架構更新,所以我認爲切換數據庫也應該是一個選項 – Adrian 2010-12-17 16:47:28