【问题标题】:multiple environments with codeigniter使用 codeigniter 的多个环境
【发布时间】:2013-02-26 01:21:56
【问题描述】:

我正在尝试了解使用多种环境的最佳行动方案,例如使用 codeigniter 为我的应用程序开发、测试、生产。

到目前为止,我的应用程序只有一个文件夹。我看到在配置文件中讨论的地方为每个环境创建一个文件夹,并在每个环境文件夹中放置例如数据库文件的副本。

这是处理多个环境的最佳方法吗?我问的原因是因为如果我在我的开发子域上工作,我仍然必须将所有相同的文件重新上传到主根文件夹。这是最好的工作流程吗?

所以基本上我有两个网站。

dev.siteurl.com 网站网址.com

我正在尝试找出处理此问题的最佳选择。因为我想知道是否只需将所有文件重新上传到主级别,以便它可以处理生产服务器还是有更简单的方法。

【问题讨论】:

    标签: codeigniter


    【解决方案1】:

    是的,它的工作方式是在您的 /application/config 文件夹下创建一个名为 development 的额外嵌套文件夹,以便您拥有

    /应用程序/配置/开发/

    在开发中,您将放置一个 database.php 文件的副本并更改您的开发数据库设置

    /application/config/development/database.php

    那么你必须告诉codeigniter你使用的是哪个版本,所以在你的基础根文件夹中编辑index.php:

    /index.php

    define('ENVIRONMENT', 'development');
    

    当你想使用 /config/development/database.php 时你将你的环境更改为开发,当你想使用生产数据库时你将环境更改为生产

    编辑:CI TOC 也有一个简短的部分解释这一点:https://www.codeigniter.com/user_guide/general/environments.html

    【讨论】:

    • 所以我必须将所有相同的文件和文件夹上传到现场制作根目录?
    • 不,当您更改 ENVIRONMENT 变量时,您放置在 /application/config/development/ 中的任何文件都将覆盖 /application/config/ 中的相同文件。这是如果您的生产环境与开发环境不同(数据库设置等)。您的问题是工作流程问题吗?
    • 我的意思是我有我的 dev.siteurl.com 和我的 siteurl.com,我必须将所有相同的文件上传两次,不是吗?
    • 这是您需要通过工作流和集成解决的问题。最简单的方法是使用带有 post 接收钩子的 git 并将 master 发送到一个文件夹并将 dev 发送到另一个文件夹。所以是的,你最终会使用两个文件夹,但 git 版本控制会处理这些混乱。
    • 拍得好。不是我想要的答案,因为我仍然不知道我应该做什么。
    【解决方案2】:

    我在 index.php 中定义环境
    做类似的事情

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

    并根据环境变量使用配置部分

    【讨论】:

      【解决方案3】:

      我知道这是一个旧线程,但我现在正在处理一个 Codeigniter 项目,并且正在寻找一种维护两个环境的好方法,而不必在两个不同的 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';
      

      【讨论】:

        猜你喜欢
        • 2015-03-02
        • 2023-03-05
        • 2012-08-21
        • 1970-01-01
        • 2013-11-28
        • 2020-11-26
        • 2020-05-28
        • 1970-01-01
        • 2020-11-19
        相关资源
        最近更新 更多