简述
最近在做一些企业站,因为有很多个网站,如果没个网站都搭建一套程序,未免有点太过浪费资源,如何用一套后台框架来实现多个网站的部署呢?每个网站都有独立数据库,具体如何实现呢?
准备工作
(1)搭建一套无测试数据的五指cms,网站1,域名为:www.xiaozhe.com
(2)第2个网站为:www.zhezhe.com,想用网站1后台的代码;
(3)第3个网站为:www.wangxiaozhe.com,依然用网站1后台框架;
实现过程
(1)系统配置文件根据域名自适应:
1.1) 在config文件夹下增加网站2与网站3的配置文件(注意:不要忘记更改各个配置文件里的配置项哟);
1.2) 更改入口文件读取配置文件的地方;
<?php
//根据域名自适应配置文件:开始
$domainurl=$_SERVER['SERVER_NAME'];
$pos=strpos($domainurl,".");
$domain=substr($domainurl,$pos+1);
$domain=str_replace(".","_",$domain);
$domain=preg_replace('|[0-9/]+|','',$domain);
require './configs/web_config_'.$domain.'.php';
//根据域名自适应配置文件:结束
?>
(2)数据库配置文件根据域名自适应:
2.1) 先把网站1的数据库先复制2份,分别命名为相应的数据库名称,如:xiaozhe_com...(数据库名字可以随便起,因为可以根据域名不同走不同数据库配置);
2.2) 更改config文件下的 mysql_config.php 文件;
2.3) 更改 coreframe\app\core\libs\class\db.class.php 文件,做出如下调整:
<?php
/**
* Class constructor
*
* @param string $config_file 配置文件
*/
public function __construct($config_file = 'mysql_config') {
$this->mysql_config = get_config($config_file);
//根据域名自适应数据库:开始
$domainurl=$_SERVER['SERVER_NAME'];
$pos=strpos($domainurl,".");
$domain=substr($domainurl,$pos+1);
$domain=preg_replace('|[0-9/]+|','',$domain);
$this->db_key=$domain;
$mysql_config=$this->mysql_config;
$this->mysql_config=array();
$this->mysql_config[$domain]=$mysql_config[$domain];
//根据域名自适应数据库:结束
$this->dbname = $this->mysql_config[$this->db_key]['dbname'];
$this->tablepre = $this->mysql_config[$this->db_key]['tablepre'];
$this->dbcharset = $this->mysql_config[$this->db_key]['dbcharset'];
$this->slave_server = isset($this->mysql_config[$this->db_key]['slave_server']) ? $this->mysql_config[$this->db_key]['slave_server'] : '';
$this->master_db = load_class($this->mysql_config[$this->db_key]['type'],'core',$this->mysql_config[$this->db_key]);
if($this->slave_server) {
$slave_server = weight_rand($this->slave_server);
if($slave_server=='default') {
$this->read_db = $this->master_db;
} else {
$this->read_db = load_class($this->mysql_config[$this->slave_server]['type'],'core',$this->mysql_config[$this->slave_server]);
}
} else {
$this->read_db = $this->master_db;
}
}
?>
2.4) 经过以上步骤,数据库这块也就配置好了。
总结
这,依然是木有总结的一篇博文~