在服务器上使用符号链接将 Web 根目录指向适当的目录是一项历史悠久的技术。假设你给你的 Git Repo 取了一个明显的名字:clientsite.com,所以在那个文件夹中你有:
该文件夹将上传到您的登台/生产服务器。然后,在登台服务器上,您将创建一个指向名为 public_html 的 web_root 的符号链接:
ln -s clientsite.com/web_root public_html
然后在生产服务器上,您将创建一个名为 content 的指向 web_root 的符号链接:
ln -s clientsite.com/web_root content
现在,它的精彩之处在于,如果您非常聪明并且正在使用 MSM,您可以创建 config.php 和 index.php 文件,允许您在该 EE 安装中为您的所有域使用 web_root 并创建指向它的符号链接对于每个站点。例如:
ln -s clientsite.com/web_root siteone_html
ln -s clientsite.com/web_root sitetwo_html
然后在 index.php 中,查看 HTTP_HOST 服务器配置以设置 site_name:
switch ( $_SERVER['HTTP_HOST'] ) {
case 'siteone.com' :
case 'dev.siteone.com' :
$assign_to_config['site_name'] = 'siteone';
break;
case 'sitetwo.com' :
case 'dev.sitetwo.com' :
$assign_to_config['site_name'] = 'site two';
break;
}
最后,您的 config.php 可以做一些非常相似的事情:
$config['site_index'] = "";
$config['site_url'] = "http://".$_SERVER['HTTP_HOST'];
$config['server_path'] = $_SERVER['DOCUMENT_ROOT'];
$config['cp_url'] = $config['site_url']."/".$config['system_folder'].'/index.php';
....stuff here...
switch ( $_SERVER['HTTP_HOST'] ) {
// production
case 'siteone.com' :
$config['cookie_domain'] = ".siteone.com";
$db['expressionengine']['hostname'] = "111.222.111.22";
$db['expressionengine']['username'] = "siteone";
$db['expressionengine']['password'] = "passone";
$db['expressionengine']['database'] = "database_live";
$db['expressionengine']['db_debug'] = FALSE;
break;
// staging
case 'dev.siteone.com' :
$config['cookie_domain'] = "dev.siteone.com";
$db['expressionengine']['hostname'] = "333.444.555.22";
$db['expressionengine']['username'] = "siteone";
$db['expressionengine']['password'] = "passone";
$db['expressionengine']['database'] = "database_dev";
$db['expressionengine']['db_debug'] = FALSE;
break;
}
通过这种方式,您可以拥有全局配置选项,然后也可以拥有特定于站点的选项。