2个dede共用数据库

99ANYc3cd6
预计阅读时长 12 分钟
位置: 首页 DEDE建站 正文

核心原理

织梦CMS的所有数据(文章、栏目、会员、模型等)都以数据表的形式存储在MySQL数据库中,默认情况下,这些表都以 dede_ 为前缀,dede_archives (文章表)、dede_arctype (栏目表)。

如果两个网站共用一个数据库,并且都使用默认的 dede_ 前缀,那么当你在网站A发布一篇文章时,它会插入到 dede_archives 表中;当你同时在网站B发布一篇文章时,它也插入到同一个 dede_archives 表,这会导致:

  1. 数据完全混乱:网站A的文章会出现在网站B的列表中,反之亦然。
  2. 管理混乱:后台管理的数据会相互覆盖。

解决方案:为第二个网站(或所有后续网站)在安装时指定一个不同的表前缀dede2_


详细操作步骤

假设你已经有一个正在运行的织梦网站A,现在要安装织梦网站B,并让它们共用数据库。

第1步:准备网站文件

  1. 将织梦CMS的安装包解压,上传到你的Web服务器的另一个目录。
    • 网站A: www.yoursite.com (根目录)
    • 网站B: www.yoursite.com/subsite (子目录) 或 new.yoursite.com (新域名)

第2步:修改安装文件(关键步骤)

在安装网站B之前,你需要修改其安装文件,以指定一个唯一的数据库表前缀。

  1. 找到网站B安装包中的 /data/baseconfig.php 文件,如果找不到,可能需要先创建一个空的 install_lock.txt 文件以触发安装程序的某些检查,或者直接修改 /include/common.inc.php(不推荐,风险较高)。

  2. 强烈推荐的方法:在安装过程中,安装程序会让你填写数据库信息,在填写数据库信息的页面上,通常会有一个“数据库表前缀”的输入框。在这里手动输入一个不同于网站A的前缀dede2_

    如果安装程序没有提供这个选项,或者你想提前配置,可以手动编辑 /data/baseconfig.php 文件(如果存在),或者在安装前创建一个 config.php 文件在 /data/ 目录下,内容如下:

    <?php
    //数据库连接信息
    $cfg_dbhost = 'localhost';
    $cfg_dbname = 'your_database_name'; // 你要共用的数据库名
    $cfg_dbuser = 'your_database_user'; // 数据库用户名
    $cfg_dbpwd = 'your_database_password'; // 数据库密码
    $cfg_dbprefix = 'dede2_'; // <--- 这里是关键!设置一个全新的前缀
    $cfg_db_language = 'gbk'; // 或 'utf-8',根据你的网站编码选择
    // 还可以设置其他信息,如网站名称等
    $cfg_webname = '我的第二个网站';
    ?>

    这样,当安装程序运行时,它会自动读取这个配置文件,并使用你指定的表前缀。

第3步:执行安装

  1. 在浏览器中访问网站B的安装地址,www.yoursite.com/subsite/install
  2. 按照安装向导的提示进行操作,在“数据库设置”步骤,填入你现有的数据库信息:
    • 数据库主机:localhost (通常是)
    • 数据库名:your_database_name (与网站A相同)
    • 数据库用户名:your_database_user
    • 数据库密码:your_database_password
    • 数据库表前缀dede2_ (如果你没有提前配置文件,就在这里输入)
  3. 继续完成安装向导的其余步骤(网站信息、管理员账号等)。

安装完成后,你的数据库中就会出现两组表:

  • 网站A的表:dede_archives, dede_arctype, dede_admin ...
  • 网站B的表:dede2_archives, dede2_arctype, dede2_admin ...

它们相互独立,不会产生数据冲突。


注意事项与最佳实践

绝对不要使用相同的表前缀!

这是最最重要的一点,否则后果不堪设想。

后台登录地址

两个网站的后台登录地址是独立的,但都指向同一个数据库。

  • 网站A后台:www.yoursite.com/dede
  • 网站B后台:www.yoursite.com/subsite/dede

虽然地址不同,但它们管理的是数据库中不同前缀的表,你可以用同一个管理员账号登录,也可以为每个网站设置独立的管理员。

会员系统(登录、注册)

默认情况下,会员表(如 dede_member)也会因为前缀不同而分离,这意味着:

  • 网站A的会员无法直接登录网站B。
  • 网站B的会员也无法直接登录网站A。

如果你希望会员系统互通,你需要手动修改网站B的配置,使其使用网站A的会员表。

  1. 在网站B的 /data/dbcfg.php 文件中,找到会员相关的配置项。
  2. 将会员表的前缀改为网站A的前缀,将 cfg_member_table = 'dede2_member'; 改为 cfg_member_table = 'dede_member';
  3. 你可能还需要对其他相关的会员表(如 dede_member_tpl, dede_member_space 等)做同样操作。

警告:手动修改配置文件有一定风险,请务必在操作前备份数据库和文件。

数据共享(高级需求)

如果你希望某些数据(软件下载”模型的数据)在两个网站间共享,但又不想共享所有数据,这会更复杂,你需要:

  1. 确定要共享的表(dede_addonsoft)。
  2. 在安装网站B时,不要创建这个表
  3. 在网站B的配置文件中,手动指定这个共享表的完整名称(不带前缀)或前缀与网站A一致。 在网站B的代码中,当涉及到查询 dede_addonsoft 表时,需要确保它查询的是 your_database_name.dede_addonsoft,而不是 your_database_name.dede2_addonsoft。 这通常需要修改网站B的模型文件或编写自定义的SQL查询,不建议新手操作。

备份策略

由于两个网站共用一个数据库,你的数据库备份策略需要同时考虑两个网站,恢复备份时,也要确保两个网站都能正常工作。

插件和模板兼容性

确保你为网站B安装的插件和使用的模板是兼容的,并且不会因为修改了数据库配置而出现问题。


操作项 网站A (主站) 网站B (副站) 说明
网站目录 /var/www/html/siteA /var/www/html/siteB 两个独立的网站程序文件
数据库 db_yoursite db_yoursite 共用同一个数据库
表前缀 dede_ dede2_ 核心!必须不同
会员系统 dede_member dede2_member 默认独立,可手动配置为共享
后台管理 siteA.com/dede siteB.com/dede 独立的后台入口

通过以上步骤,你就可以成功实现两个织梦网站共用一个数据库,同时保持数据和管理的独立性。

-- 展开阅读全文 --
头像
reentrant c语言
« 上一篇 02-28
织梦虚拟主机幻灯组件如何使用?
下一篇 » 02-28

相关文章

取消
微信二维码
支付宝二维码

目录[+]