dede data目录如何安全迁移至web根目录外?

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

第一步:准备工作(至关重要!)

  1. 备份!备份!备份!

    dede data目录迁移到web以外目录
    (图片来源网络,侵删)
    • 完整网站文件备份:将你的整个网站目录(包括 /dede/include/templets 等)打包下载。
    • 完整数据库备份:登录你的 DedeCMS 后台,【系统】-> 【数据库备份/还原】,生成一个完整的 SQL 数据备份文件并下载。
    • 确认新目录路径:确定一个 Web 服务器无法直接通过 HTTP 访问的目录,如果你的网站根目录是 /var/www/html/,你可以将 data 目录移动到 /var/www/data//home/dedecms_data/
  2. 文件权限确认

    • 确保你的 Web 服务器用户(如 www-data, apache, nginx)对新目录有读取和写入权限。
    • 如果新目录是 /var/www/data/,你可能需要执行:
      sudo chown -R www-data:www-data /var/www/data/
      sudo chmod -R 755 /var/www/data/

      (注意:755 是常用权限,根据你的服务器安全策略可能需要调整,但必须保证 Web 用户可读写。)


第二步:迁移 data 目录

  1. 移动目录

    • 通过 FTP 客户端或 SSH 连接到你的服务器。
    • 将网站根目录下的 data 文件夹,剪切或复制到你准备好的 Web 根目录之外 的新目录中。
    • 示例
      • 旧路径:/var/www/html/data/
      • 新路径:/var/www/data/
  2. 创建软链接(推荐方法)

    dede data目录迁移到web以外目录
    (图片来源网络,侵删)
    • 为了让 DedeCMS 能继续找到 data 目录,最安全、最推荐的方法是创建一个从 旧位置 指向 新位置 的符号链接(软链接),这样,你不需要修改任何代码,系统会自动重定向。

    • 通过 SSH 登录服务器,在网站根目录下执行以下命令:

      # 语法: ln -s [新目录的完整路径] [旧目录的路径]
      ln -s /var/www/data/ /var/www/html/data
    • 验证:执行 ls -l /var/www/html/,你应该会看到 data 的显示类似于 data -> /var/www/data/,这表示链接创建成功。

    • 为什么不直接修改代码? 直接修改代码意味着未来如果 DedeCMS 升级,你可能需要重新修改这些文件,非常麻烦,而使用软链接,升级过程完全不受影响。

      dede data目录迁移到web以外目录
      (图片来源网络,侵删)

第三步:修改核心配置文件

如果因为某些原因(如服务器不支持软链接或你不想用软链接),你需要手动修改配置文件来指向新路径,请按以下步骤操作:

  1. 修改 /include/config_base.php

    • 这个文件定义了 DEDEROOTcfg_cmspath 等路径。
    • 找到类似下面这行代码:
      define('DEDEROOT', dirname(__FILE__).'/');
    • 这行通常不需要修改,因为它定义的是 include 目录的相对路径。
    • 更重要的是检查 cfg_cmspath,它通常在 /data/config.cache.inc.php 文件中定义,但我们不建议直接修改它,修改 /include/config_base.php 是更根本的方法。
  2. 修改 /include/common.inc.php

    • 这个文件是核心初始化文件,它引入了路径配置,找到以下代码块:

      //检验用户登录状态
      $cuserLogin = new userLogin();
      if($cuserLogin->getUserID()<=0)
      {
          if($dopost == 'login' || $dopost == 'rm' || $dopost == 'ss' || $dopost == 'loginok' || $dopost == 'change')
          {
              // ...
          }
          else
          {
              header('location:login.php?gotopage='.urlencode($dedeNowurl));
              exit();
          }
      }
      //引入数据库配置文件
      require_once(DEDEROOT.'data/config.cache.inc.php');
    • 关键是这行:require_once(DEDEROOT.'data/config.cache.inc.php');

    • 将它修改为指向你的新路径。

      // 假设新路径是 /var/www/data/
      require_once('/var/www/data/config.cache.inc.php');
    • 注意:这里使用 绝对路径 是最稳妥的,可以避免路径解析错误。


第四步:修改缓存和会话存储路径

为了更彻底地安全隔离,建议也将缓存和会话文件移出 Web 根目录。

  1. 修改缓存目录

    • 在 DedeCMS 后台,【系统】-> 【核心设置】
    • 找到 “模板缓存目录” 选项,将其修改为你的新 data 目录下的一个子目录,/var/www/data/cache/
    • 保存设置,系统会自动在新的位置创建缓存目录。
  2. 修改会话目录 (可选)

    • 在 DedeCMS 后台,【系统】-> 【系统基本参数】 -> 【核心设置】
    • 找到 “cfg_session_path” 选项,将其也修改为你的新 data 目录下的一个子目录,/var/www/data/session/
    • 保存设置,你可能需要手动创建这个目录并赋予 Web 用户权限:
      mkdir -p /var/www/data/session/
      chown -R www-data:www-data /var/www/data/session/
      chmod 755 /var/www/data/session/

第五步:验证和测试

  1. 前台访问测试:打开你的网站首页,检查是否正常显示,图片、CSS、JS 是否加载正常。
  2. 后台访问测试:访问你的网站后台(如 你的域名/dede/login.php),尝试登录,检查各项功能是否正常。
  3. 功能测试
    • 发布一篇新文章,检查是否生成成功。
    • 清理一下系统缓存,看是否报错。
    • 检查首页、列表页、内容页是否都正常。
  4. 安全测试
    • 在浏览器中直接访问你原来的 data 目录的 URL(如 你的域名/data/)。
    • 如果你使用了软链接或修改了配置,这个页面应该会显示 403 Forbidden404 Not Found,这才是正确的!如果仍然能列出文件,说明操作失败。

总结与最佳实践

方法 优点 缺点 推荐度
创建软链接 无侵入性,升级无忧,操作简单,最安全。 依赖服务器支持创建符号链接的权限。 ⭐⭐⭐⭐⭐ (强烈推荐)
修改配置文件 不依赖服务器权限,灵活性高。 侵入性强,每次升级后都可能需要重新修改,容易出错。 ⭐⭐ (不推荐,除非万不得已)

最终建议:优先使用 软链接 的方法,这是最专业、最省心、最安全的做法,只有在服务器环境受限时,才考虑修改配置文件。

完成以上所有步骤并验证无误后,你的 DedeCMS 网站的 data 目录就成功迁移到安全位置了。

-- 展开阅读全文 --
头像
如何用C语言实现MATLAB的filtfilt滤波功能?
« 上一篇 11-28
dede核心模板如何新建foot.html?
下一篇 » 11-28

相关文章

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

目录[+]