新聞中心
織夢是一個(gè)開源的內(nèi)容管理系統(tǒng),主要用于構(gòu)建和管理中小型網(wǎng)站。作為一種免費(fèi)的CMS,它的應(yīng)用范圍越來越廣泛,而在使用過程中,數(shù)據(jù)庫的管理卻成為了常見的難題。這是因?yàn)榭棄粝到y(tǒng)每個(gè)站點(diǎn)都有自己的數(shù)據(jù)庫,如果同時(shí)管理多個(gè)站點(diǎn),則需要獨(dú)立管理多個(gè)數(shù)據(jù)庫,這無疑會(huì)增加運(yùn)維成本。本文將介紹如何克服這個(gè)難題,實(shí)現(xiàn)織夢數(shù)據(jù)庫共用,提高管理的效率。

一、問題分析
使用織夢系統(tǒng)時(shí),每個(gè)站點(diǎn)都有一個(gè)獨(dú)立的數(shù)據(jù)庫,這種獨(dú)立的數(shù)據(jù)庫管理模式在織夢系統(tǒng)正常使用時(shí)沒有什么問題,但是當(dāng)需要同時(shí)管理多個(gè)站點(diǎn)時(shí),每個(gè)站點(diǎn)都需要獨(dú)立管理自己的數(shù)據(jù),這會(huì)導(dǎo)致管理成本的增加。同時(shí),由于每個(gè)站點(diǎn)都有自己的配置文件,站點(diǎn)之間的訪問IP和數(shù)據(jù)庫鏈接IP也不相同,這進(jìn)一步增加了站點(diǎn)管理的復(fù)雜度。
二、解決方案
針對上述問題,我們可以通過實(shí)現(xiàn)織夢數(shù)據(jù)庫共用來簡化站點(diǎn)管理。具體來說,可以將多個(gè)站點(diǎn)的數(shù)據(jù)庫匯總到一個(gè)數(shù)據(jù)庫中,這樣就可以通過一個(gè)統(tǒng)一的管理界面來管理所有站點(diǎn)的數(shù)據(jù)庫了。接下來,本文將從以下幾個(gè)方面詳細(xì)介紹實(shí)現(xiàn)方案:
1. 整理織夢系統(tǒng)目錄結(jié)構(gòu)
為實(shí)現(xiàn)織夢數(shù)據(jù)庫的共享,我們需要把所有網(wǎng)站的數(shù)據(jù)庫放在同一個(gè)數(shù)據(jù)庫中,初始目錄結(jié)構(gòu)如下:
web1
├── assets
└── database
web2
├── assets
└── database
web3
├── assets
└── database
上述目錄結(jié)構(gòu)是每個(gè)網(wǎng)站的目錄結(jié)構(gòu),如果要實(shí)現(xiàn)共享數(shù)據(jù)庫,需要將 database 文件夾移到公共的目錄中,比如:
/public
└── database
這個(gè)數(shù)據(jù)庫目錄可以是虛擬機(jī)的共享目錄、NAS 共享目錄等,這樣每個(gè)網(wǎng)站就可以通過這個(gè)目錄來訪問公共的數(shù)據(jù)庫了。
2. 修改織夢數(shù)據(jù)庫配置信息
在把所有網(wǎng)站的數(shù)據(jù)庫放到一個(gè)數(shù)據(jù)庫中之后,我們需要修改織夢系統(tǒng)的數(shù)據(jù)庫配置信息以引用公共數(shù)據(jù)庫。具體來說,我們需要修改每個(gè)網(wǎng)站的 inc_config.php 文件,將數(shù)據(jù)庫配置信息改成:
host=’xxx.xxx.xxx.xxx:port’ (公共數(shù)據(jù)庫 IP:port)
user=’xxx’ (公共數(shù)據(jù)庫用戶名)
password=’xxx’ (公共數(shù)據(jù)庫密碼)
dbname=’xxx’ (公共數(shù)據(jù)庫名)
這樣在所有需要共享數(shù)據(jù)庫的網(wǎng)站中都需要修改 inc_config.php 文件,以保證網(wǎng)站能夠正確連接到公共數(shù)據(jù)庫。
3. 織夢數(shù)據(jù)庫表名前綴作區(qū)分
如果我們把多個(gè)網(wǎng)站的數(shù)據(jù)放到一個(gè)數(shù)據(jù)庫中,那么必須進(jìn)行區(qū)分。這里我使用了數(shù)據(jù)庫的表名前綴方式,即通過為每個(gè)網(wǎng)站的表添加前綴來區(qū)分不同的站點(diǎn)。比如:
站點(diǎn)1的數(shù)據(jù)庫表名為 dede_
站點(diǎn)2的數(shù)據(jù)庫表名為 cy_
站點(diǎn)3的數(shù)據(jù)庫表名為 ew_
…
這樣即便多個(gè)站點(diǎn)共用同一個(gè)數(shù)據(jù)庫,也不會(huì)出現(xiàn)表重復(fù)的問題,同時(shí)也方便以后維護(hù)。
4. 多站點(diǎn)后臺(tái)管理
為了方便管理多個(gè)站點(diǎn),織夢系統(tǒng)提供了多站點(diǎn)管理工具,使用起來十分方便。在目錄下新建一個(gè) 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(“l(fā)ocation:../install/index.php”);
exit();
}
else
{
fclose($fp);
unlink(‘../install/test.temp’);
}
}
//引入多站點(diǎn)函數(shù)文件
require_once(DEDEDATA.’/multipleurls.inc.php’);
$urlsfile = DEDEDATA.’/multipleurls.inc.php’;
//判斷是否存在多站點(diǎn)配置文件
if(!file_exists($urlsfile))
{
ShowMsg(‘系統(tǒng)出現(xiàn)錯(cuò)誤’,’多站點(diǎn)配置文件不存在,請聯(lián)系管理員?!?-1,2023);
exit();
}
//載入多站點(diǎn)配置文件
require_once($urlsfile);
$dsql->safeCheck = TRUE;
$dsql->SetLongLink();
//判斷是否為多站點(diǎn)管理
if(!$cfg_multi_site)
{
require_once(DEDEADMIN.’/index_my.php’);
exit();
}
//加載多站點(diǎn)配置
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’=> ‘默認(rèn)站點(diǎn) (‘.$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;
然后,在后臺(tái)管理登錄頁面選擇多站點(diǎn)的登錄方式,輸入相應(yīng)的用戶密碼,即可進(jìn)入后臺(tái)管理頁面。實(shí)現(xiàn)了所有站點(diǎn)的管理聚合,大大提高了管理效率。
三、
本文主要介紹了如何實(shí)現(xiàn)織夢系統(tǒng)的數(shù)據(jù)庫共用,提高管理效率。通過修改系統(tǒng)目錄結(jié)構(gòu),修改數(shù)據(jù)庫連接配置信息、添加表前綴、多站點(diǎn)后臺(tái)管理等方式,成功實(shí)現(xiàn)了多個(gè)網(wǎng)站共享一個(gè)數(shù)據(jù)庫的操作。這不僅可以簡化管理員的工作,而且有效提高了管理效率,但同時(shí)也需要注意安全性及數(shù)據(jù)隔離性問題。希望本文對大家有所幫助,歡迎大家分享交流。
相關(guān)問題拓展閱讀:
- 同一個(gè)服務(wù)器,不同數(shù)據(jù)庫的2個(gè)織夢網(wǎng)站數(shù)據(jù)數(shù)據(jù)怎么調(diào)用?
同一個(gè)服務(wù)器,不同數(shù)據(jù)庫的2個(gè)織夢網(wǎng)站數(shù)據(jù)數(shù)據(jù)怎么調(diào)用?
織夢dedecms數(shù)據(jù)庫不在同一個(gè)服務(wù)器,數(shù)據(jù)調(diào)用方法!
data/common.inc.php
這個(gè)是保存數(shù)據(jù)庫連接信息的,改下這個(gè)文件就可以了。
之一個(gè)要改的就是cfg_dbhost數(shù)據(jù)庫服務(wù)器地址,
如果不是和WEB空間在同一個(gè)服務(wù)器,填上IP就可以了,
在同一個(gè)服務(wù)器一般使用localhost或者127.0.0.1
$cfg_dbhost = ’123.456.789.123′;
$cfg_dbname = ”; 這個(gè)是數(shù)據(jù)庫名稱
$cfg_dbuser = ”; 這個(gè)是數(shù)據(jù)庫的用戶名
$cfg_dbpwd = ”; 數(shù)據(jù)庫密碼
$cfg_dbprefix = ‘dede_’; 這個(gè)是數(shù)據(jù)表的前綴
$cfg_db_language = ‘gbk’; 這個(gè)是數(shù)據(jù)庫的編碼,一定要兩個(gè)DEDE站點(diǎn)的編碼一樣,如果不同就會(huì)出現(xiàn)亂碼。
注意一下哦,有很多空間商是不允許外部鏈接到數(shù)據(jù)庫的,所以你要向他們咨詢下是否可以在外站連接。
同一服務(wù)器,不同數(shù)據(jù)庫!
{dede:sql sql=”SELECT id as tmd,title FROM `另外個(gè)站的數(shù)據(jù)庫名`.`dede_archives` ORDER BY tmd desc LIMIT 0,10″}
{/dede:sql}
這個(gè)只用是織夢程序的都可以,不過數(shù)據(jù)庫UTF8的用UTF8的GBK的用GBK的,在數(shù)據(jù)庫里面刪除舊的信息導(dǎo)入新的數(shù)據(jù)庫信息,然后還要把后臺(tái)的data/common.inc.php對應(yīng)的數(shù)據(jù)庫信息修改下,(數(shù)據(jù)庫文件記得先備份)你可以試試?;蛘吣氵€可以試試,把A站的文件在織夢后臺(tái)選擇數(shù)據(jù)庫備份/還原,然后在FTP找到data\backupdata下載到本地,在上傳到上傳到B站的data\backupdata文件,選擇還原試試。
關(guān)于織夢數(shù)據(jù)庫共用的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都網(wǎng)站營銷推廣找創(chuàng)新互聯(lián),全國分站站群網(wǎng)站搭建更好做SEO營銷。
創(chuàng)新互聯(lián)(www.cdcxhl.com)四川成都IDC基礎(chǔ)服務(wù)商,價(jià)格厚道。提供成都服務(wù)器托管租用、綿陽服務(wù)器租用托管、重慶服務(wù)器托管租用、貴陽服務(wù)器機(jī)房服務(wù)器托管租用。
網(wǎng)站標(biāo)題:克服困難,實(shí)現(xiàn)織夢數(shù)據(jù)庫共用,實(shí)現(xiàn)高效管理 (織夢數(shù)據(jù)庫共用)
轉(zhuǎn)載來于:http://m.5511xx.com/article/cccojjs.html


咨詢
建站咨詢
