织梦是一个开源的内容管理系统,主要用于构建和管理中小型网站。作为一种免费的CMS,它的应用范围越来越广泛,而在使用过程中,数据库的管理却成为了常见的难题。这是因为织梦系统每个站点都有自己的数据库,如果同时管理多个站点,则需要独立管理多个数据库,这无疑会增加运维成本。本文将介绍如何克服这个难题,实现织梦数据库共用,提高管理的效率。
一、问题分析
使用织梦系统时,每个站点都有一个独立的数据库,这种独立的数据库管理模式在织梦系统正常使用时没有什么问题,但是当需要同时管理多个站点时,每个站点都需要独立管理自己的数据,这会导致管理成本的增加。同时,由于每个站点都有自己的配置文件,站点之间的访问IP和数据库链接IP也不相同,这进一步增加了站点管理的复杂度。
二、解决方案
针对上述问题,我们可以通过实现织梦数据库共用来简化站点管理。具体来说,可以将多个站点的数据库汇总到一个数据库中,这样就可以通过一个统一的管理界面来管理所有站点的数据库了。接下来,本文将从以下几个方面详细介绍实现方案:
1. 整理织梦系统目录结构
为实现织梦数据库的共享,我们需要把所有网站的数据库放在同一个数据库中,初始目录结构如下:
web1
├── assets
└── database
web2
├── assets
└── database
web3
├── assets
└── database
上述目录结构是每个网站的目录结构,如果要实现共享数据库,需要将 database 文件夹移到公共的目录中,比如:
/public
└── database
这个数据库目录可以是虚拟机的共享目录、NAS 共享目录等,这样每个网站就可以通过这个目录来访问公共的数据库了。
2. 修改织梦数据库配置信息
在把所有网站的数据库放到一个数据库中之后,我们需要修改织梦系统的数据库配置信息以引用公共数据库。具体来说,我们需要修改每个网站的 inc_config.php 文件,将数据库配置信息改成:
host=’xxx.xxx.xxx.xxx:port’ (公共数据库 IP:port)
user=’xxx’ (公共数据库用户名)
password=’xxx’ (公共数据库密码)
dbname=’xxx’ (公共数据库名)
这样在所有需要共享数据库的网站中都需要修改 inc_config.php 文件,以保证网站能够正确连接到公共数据库。
3. 织梦数据库表名前缀作区分
如果我们把多个网站的数据放到一个数据库中,那么必须进行区分。这里我使用了数据库的表名前缀方式,即通过为每个网站的表添加前缀来区分不同的站点。比如:
站点1的数据库表名为 dede_
站点2的数据库表名为 cy_
站点3的数据库表名为 ew_
…
这样即便多个站点共用同一个数据库,也不会出现表重复的问题,同时也方便以后维护。
4. 多站点后台管理
为了方便管理多个站点,织梦系统提供了多站点管理工具,使用起来十分方便。在目录下新建一个 config.inc.php 文件,并加入以下代码:
$cfg_typeFiles= array();
$cfg_typeFiles[] = DEDEDATA.’/typeatt.php’;
$cfg_typeFiles[] = DEDEINC.’/typeunit.php’;
$cfg_typeFiles[] = DEDEINC.’/typelink.php’;
$cfg_typeFiles[] = DEDEINC.’/enums.func.php’;
$havemsg = 0;
if(empty($fmdo)) $fmdo = ”;
//检查安装目录安全性
if( is_dir(‘../install’) )
{
$fp = @fopen(‘../install/test.temp’,’w’);
if(!$fp)
{
header(“location:../install/index.php”);
exit();
}
else
{
fclose($fp);
unlink(‘../install/test.temp’);
}
}
//引入多站点函数文件
require_once(DEDEDATA.’/multipleurls.inc.php’);
$urlsfile = DEDEDATA.’/multipleurls.inc.php’;
//判断是否存在多站点配置文件
if(!file_exists($urlsfile))
{
ShowMsg(‘系统出现错误’,’多站点配置文件不存在,请联系管理员。’,-1,2023);
exit();
}
//载入多站点配置文件
require_once($urlsfile);
$dsql->safeCheck = TRUE;
$dsql->SetLongLink();
//判断是否为多站点管理
if(!$cfg_multi_site)
{
require_once(DEDEADMIN.’/index_my.php’);
exit();
}
//加载多站点配置
foreach($cfg_arrsites as $key=>$val)
{
if($key == $cfg_defaultsite)
{
$siteInfo = array();
$siteInfo[‘id’] = ”;
$siteInfo[‘sitepath’] = ”;
$siteInfo[‘dirname’] = ”;
$siteInfo[‘domn’] = ”;
$siteInfo[‘siteurl’] = ”;
$siteInfo[‘status’] = ”;
$siteInfo[‘template’] = ”;
$siteInfo[‘templatepath’] = ”;
$siteInfo[‘keywords’] = ”;
$siteInfo[‘description’] = ”;
$siteInfo[‘templet_dir’] = ”;
$siteInfo[‘site_name’] = ”;
$siteInfo[‘BEIAN’] = ”;
$siteInfo[‘ICP’] = ”;
$siteInfo[‘spaw’] = ”;
$siteInfo[‘cross’] = ”;
$siteInfo[‘SiteTarget’] = ”;
$siteInfo[‘tel’] = ”;
$siteInfo[‘orderby’] = ”;
$siteInfo[‘navtype’] = ”;
continue;
}
else
{
$query = “SELECT * FROM `dede_sites` WHERE `id`=’$key’ “;
$siteRow = $dsql->GetOne($query);
if(isset($siteRow[‘siteurl’]) && !empty($siteRow[‘siteurl’]))
{
$siteInfo[‘id’] = $siteRow[‘id’];
$siteInfo[‘sitepath’] = $siteRow[‘sitepath’];
$tt = explode(‘/’, $siteInfo[‘sitepath’]);
$tt1 = array_slice($tt, 0, -1);
$siteInfo[‘dirname’] = @end($tt1);
$siteInfo[‘domn’] = $siteRow[‘domn’];
$siteInfo[‘siteurl’] = $siteRow[‘siteurl’];
$siteInfo[‘status’] = $siteRow[‘status’];
$siteInfo[‘template’] = $siteRow[‘template’];
$siteInfo[‘templatepath’] = ”;
$siteInfo[‘keywords’] = $siteRow[‘keywords’];
$siteInfo[‘description’] = $siteRow[‘description’];
$siteInfo[‘templet_dir’] = ”;
$siteInfo[‘site_name’] = $siteRow[‘site_name’];
$siteInfo[‘BEIAN’] = $siteRow[‘BEIAN’];
$siteInfo[‘ICP’] = $siteRow[‘ICP’];
$siteInfo[‘spaw’] = $siteRow[‘spaw’];
$siteInfo[‘cross’] = $siteRow[‘cross’];
$siteInfo[‘SiteTarget’] = $siteRow[‘SiteTarget’];
$siteInfo[‘tel’] = $siteRow[‘tel’];
$siteInfo[‘orderby’] = $siteRow[‘orderby’];
$siteInfo[‘navtype’] = $siteRow[‘navtype’];
$query = “SELECT * FROM `{$key}_arctype`”;
$tempListData = $dsql->GetOne($query);
if(is_array($tempListData))
{
$siteInfo[‘tags’][‘m’] = ‘list’;
$siteInfo[‘mdir’] = $tempListData[‘mkdir’];
}
@$GLOBALS[$key] = $siteInfo;
if($GLOBALS[‘cfg_rewrite’]==0)
{
$urlsArr = explode(‘/’, $siteInfo[‘siteurl’]);
$subdomn = $urlsArr[count($urlsArr)-2];
$GLOBALS[‘cfg_mnsite’] = ‘http://’.$subdomn.’.com’;
}
}
}
}
//加载主站信息
$siteInfo = array();
$siteInfo[‘id’] = ”;
$siteInfo[‘domn’] = ”;
$siteInfo[‘siteurl’] = ”;
$siteInfo[‘keywords’] = ”;
$siteInfo[‘description’] = ”;
$GLOBALS[‘cfg_mnsite’] = ‘http://’.$cfg_basehost;
$GLOBALS[‘cfg_multi_site_list’] = array();
$cfg_multi_site_default = array();
$cfg_multi_site_list = array();
foreach ($cfg_arrsites AS $key=>$val)
{
if($key == $cfg_defaultsite)
{
$cfg_multi_site_default = array(
‘siteid’=> $key,
‘sitename’=> ‘默认站点 (‘.$cfg_basehost.’)’
);
}
else
{
if($val[‘siteurl’]!=” && $val[‘domn’]!=”)
{
$cfg_multi_site_list[] = array(
‘siteid’=> $key,
‘sitename’=> $val[‘site_name’].’ (‘.$val[‘domn’].’)’,
‘siteurl’=>$val[‘siteurl’]
);
}
}
}
$GLOBALS[‘cfg_multi_site_list’] = $cfg_multi_site_list;
$GLOBALS[‘cfg_multi_site_default’] = $cfg_multi_site_default;
然后,在后台管理登录页面选择多站点的登录方式,输入相应的用户密码,即可进入后台管理页面。实现了所有站点的管理聚合,大大提高了管理效率。
三、
本文主要介绍了如何实现织梦系统的数据库共用,提高管理效率。通过修改系统目录结构,修改数据库连接配置信息、添加表前缀、多站点后台管理等方式,成功实现了多个网站共享一个数据库的操作。这不仅可以简化管理员的工作,而且有效提高了管理效率,但同时也需要注意安全性及数据隔离性问题。希望本文对大家有所帮助,欢迎大家分享交流。
相关问题拓展阅读:
织梦dedecms数据库不在同一个服务器,数据调用方法!
data/common.inc.php
这个是保存数据库连接信息的,改下这个文件就可以了。
之一个要改的就是cfg_dbhost数据库服务器地址,
如果不是和WEB空间在同一个服务器,填上IP就可以了,
在同一个服务器一般使用localhost或者127.0.0.1
$cfg_dbhost = ’123.456.789.123′;
$cfg_dbname = ”; 这个是数据库名称
$cfg_dbuser = ”; 这个是数据库的用户名
$cfg_dbpwd = ”; 数据库密码
$cfg_dbprefix = ‘dede_’; 这个是数据表的前缀
$cfg_db_language = ‘gbk’; 这个是数据库的编码,一定要两个DEDE站点的编码一样,如果不同就会出现乱码。
注意一下哦,有很多空间商是不允许外部链接到数据库的,所以你要向他们咨询下是否可以在外站连接。
同一服务器,不同数据库!
{dede:sql sql=”SELECT id as tmd,title FROM `另外个站的数据库名`.`dede_archives` ORDER BY tmd desc LIMIT 0,10″}
{/dede:sql}
这个只用是织梦程序的都可以,不过数据库UTF8的用UTF8的GBK的用GBK的,在数据库里面删除旧的信息导入新的数据库信息,然后还要把后台的data/common.inc.php对应的数据库信息修改下,(数据库文件记得先备份)你可以试试。或者你还可以试试,把A站的文件在织梦后台选择数据库备份/还原,然后在FTP找到data\backupdata下载到本地,在上传到上传到B站的data\backupdata文件,选择还原试试。
关于织梦数据库共用的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
成都网站营销推广找创新互联,全国分站站群网站搭建更好做SEO营销。
创新互联(www.cdcxhl.com)四川成都IDC基础服务商,价格厚道。提供成都服务器托管租用、绵阳服务器租用托管、重庆服务器托管租用、贵阳服务器机房服务器托管租用。
当前标题:克服困难,实现织梦数据库共用,实现高效管理 (织梦数据库共用)
转载源于:http://www.shufengxianlan.com/qtweb/news38/453338.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联