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