2013-03-10 66 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';