2013-03-10 50 views
5

我想了解使用多個環境,如開發,測試,與codeigniter我的應用程序的生產的最佳行動方案。多個環境與codeigniter

截至目前,我的應用程序有一個文件夾。我看到在配置文件中討論的地方爲每個環境做了一個文件夾,並在每個環境文件夾中放置了一個數據庫文件的副本。

這是處理多個環境的最佳方法嗎?我問的原因是因爲如果我在我的開發子域上工作,我仍然需要重新上傳到主根文件夾的所有相同的文件。這是最好的工作流程嗎?

所以基本上我有兩個網站。

dev.siteurl.com siteurl.com

我試圖找出處理這個是最好的選擇。因爲我想知道是否需要重新將所有文件重新上傳到主級別,以便它可以處理生產服務器或有更簡單的方法。

回答

7

是它的工作方式是你/應用/ config文件夾下創建一個名爲開發一個額外的嵌套的文件夾,以便有

/應用/配置/開發/

裏面發展,你會放置一個您database.php中文件的備份,並改變你的開發數據庫設置

/application/config/development/database.php

,那麼你必須告訴笨你是哪個版本,所以在你的基地根文件夾編輯的index.php:

的index.php

define('ENVIRONMENT', 'development'); 

當你要使用的/config/development/database.php你將你的環境變化發展,而當你要使用生產數據庫,您將環境改變生產

編輯:也是CI TOC有一個簡短的章節解釋這一點:在index.php中

+0

所以我必須都是一樣的文件和文件夾上傳到現場製作的根? – 2013-03-10 23:24:25

+0

不,當您更改ENVIRONMENT變量時,無論放置在/ application/config/development /中的哪個文件都將覆蓋/ application/config /中的相同文件。這是如果你有一個不同的開發環境(數據庫設置等)。你的問題是一個工作流問題嗎? – 2013-03-11 01:12:58

+0

我的意思是我有我的dev.siteurl.com和我的siteurl.com,我不得不兩次上傳所有相同的文件嗎? – 2013-03-11 01:28:54

6

我定義envirement 0根據環境變量做類似

if ($_SERVER['SERVER_NAME']=='siteurl.com') 
    define('ENVIRONMENT', 'production'); 
else if ($_SERVER['SERVER_NAME']=='test.siteurl.com') 
    define('ENVIRONMENT', 'testing'); 
else 
    define('ENVIRONMENT', 'development'); 

,並使用配置部分

2

我知道這是一個古老的線程,但現在我工作的一個笨項目,並一直在尋找保持兩個好方法環境,而不必在兩個不同的URL上維護兩個代碼庫。如果其他人正在尋找類似的答案,這裏有一個可能的解決方案,允許您維護一個代碼庫。

對於我目前的項目,我有siteurl.com和siteurl.com/sandbox。

siteurl.com/index。PHP

define('ENVIRONMENT', 'production'); 
$system_path = '../system'; 
$application_folder = '../application'; 

siteurl.com/sandbox/index.php

define('ENVIRONMENT', 'development'); 
$system_path = '../../system'; 
$application_folder = '../../application';