【问题标题】:Maintain multiple versions of the same Php website维护同一个 PHP 网站的多个版本
【发布时间】:2010-12-17 16:39:28
【问题描述】:

我正在使用 Php 和 CodeIgniter(在 LAMP 堆栈上)构建一个新网站。一项要求是能够同时运行同一网站的多个版本,例如“live”和“dev”版本; 应该有一种快速、安全的方式来根据需要在版本之间向前和向后切换。

你能推荐一个好的技术吗?

更新

附加要求:

  • 开发者应该能够轻松创建新版本

  • 最终用户不应该注意到他/她正在使用实时版本,只有开发者可以有某种标签

【问题讨论】:

  • 这个网站数据库依赖吗?实时/开发数据库?等等..恐怕需要更多细节,否则人们会猜测并给你答案。
  • 是的,这个网站依赖于数据库;两个版本应该能够共享同一个数据库,但是开发版本可能会强制更新架构,所以我认为切换数据库也应该是一种选择

标签: php codeigniter multiple-versions


【解决方案1】:

一般使用配置文件。例如,

/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 = 'bob@bobsstore.com';
$debug = 0
?>

然后,当您需要第二个站点设置时,您只需将修订控制系统(对吗?)签出到另一个目录,然后编辑配置文件以引用测试数据库。

让一个实时站点和一个开发站点共享同一个物理数据库通常是不好的做法(不是数据库引擎,可以在单个 MySQL 数据库服务器上托管 50 个站点,但每个站点应该在 MySQL 内有自己的数据库) .

理想情况下,您应该有一个可以加载一系列测试数据并快速填充新基础系统的设置文件。

【讨论】:

  • 我很高兴每个版本都有不同的数据库;安装文件也不错
【解决方案2】:

如果您希望多个站点在一个 CodeIgniter 安装下运行,这是一个解决方案: http://www.askaboutphp.com/88/codeigniter-setting-up-multiple-sites-on-one-install.html

正如我所提到的,如果您有数据库,则需要在设置中牢记这一点。

【讨论】:

    【解决方案3】:

    只需为开发版本使用子域。 示例:

    // prod version
    www.example.com
    
    // dev version
    dev.example.com
    

    将它们分开非常重要,因为开发中的一个漏洞可以被利用并可能对实时版本造成伤害。

    【讨论】:

    • 好主意,但我认为我需要一种更灵活的方式 - 请参阅更新
    • 您如何建议从 v1 到 v2 的“切换”?我的意思是旧的实时版本被存档或删除,开发成为实时版本并上传新的开发版本?
    • 或者你的开发者应该学会快速添加子域(dev1,dev2..),有什么更好的选择,或者你可以使用dev子域的子文件夹(dev.site.com/dev1,dev. site.com/dev2)。
    • 没有上传/下载。只需将它们移动到服务器上。这并不难。
    • 这样的事情可能吗?每个版本都在其自己的目录中,例如dev.site.com/11 dev.site.com/12 ... 定义域 site.com 以指向包含实时版本的目录
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多