我正在使用 Php 和 CodeIgniter(在 LAMP 堆栈上)构建一个新网站。一项要求是能够同时运行同一网站的多个版本,例如“实时”和“开发”版本;应该有一种快速、安全的方式来根据需要在版本之间向前和向后切换。
你能推荐一个好的技术吗?
更新
其他要求:
开发人员应该能够轻松创建新版本
最终用户不应该注意到他/她正在使用实时版本,只有开发者可以有某种标签
我正在使用 Php 和 CodeIgniter(在 LAMP 堆栈上)构建一个新网站。一项要求是能够同时运行同一网站的多个版本,例如“实时”和“开发”版本;应该有一种快速、安全的方式来根据需要在版本之间向前和向后切换。
你能推荐一个好的技术吗?
更新
其他要求:
开发人员应该能够轻松创建新版本
最终用户不应该注意到他/她正在使用实时版本,只有开发者可以有某种标签
一般使用配置文件。例如,
/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 中拥有自己的数据库)。
理想情况下,您将拥有一个可以加载一系列测试数据并快速填充新基础系统的设置文件。
如果您希望在一个 CodeIgniter 安装下运行多个站点,这是一个解决方案: http ://www.askaboutphp.com/88/codeigniter-setting-up-multiple-sites-on-one-install.html
正如我所提到的,如果您有数据库,则需要在设置中牢记这一点。
只需为开发版本使用子域。例子:
// prod version
www.example.com
// dev version
dev.example.com
将它们分开非常重要,因为开发中的一个漏洞可以被利用并可能对实时版本造成伤害。