第一步:准备工作(至关重要!)
-
备份!备份!备份!
(图片来源网络,侵删)- 完整网站文件备份:将你的整个网站目录(包括
/dede、/include、/templets等)打包下载。 - 完整数据库备份:登录你的 DedeCMS 后台,【系统】-> 【数据库备份/还原】,生成一个完整的 SQL 数据备份文件并下载。
- 确认新目录路径:确定一个 Web 服务器无法直接通过 HTTP 访问的目录,如果你的网站根目录是
/var/www/html/,你可以将data目录移动到/var/www/data/或/home/dedecms_data/。
- 完整网站文件备份:将你的整个网站目录(包括
-
文件权限确认
- 确保你的 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 用户可读写。)
- 确保你的 Web 服务器用户(如
第二步:迁移 data 目录
-
移动目录
- 通过 FTP 客户端或 SSH 连接到你的服务器。
- 将网站根目录下的
data文件夹,剪切或复制到你准备好的 Web 根目录之外 的新目录中。 - 示例:
- 旧路径:
/var/www/html/data/ - 新路径:
/var/www/data/
- 旧路径:
-
创建软链接(推荐方法)
(图片来源网络,侵删)-
为了让 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 升级,你可能需要重新修改这些文件,非常麻烦,而使用软链接,升级过程完全不受影响。
(图片来源网络,侵删)
-
第三步:修改核心配置文件
如果因为某些原因(如服务器不支持软链接或你不想用软链接),你需要手动修改配置文件来指向新路径,请按以下步骤操作:
-
修改
/include/config_base.php- 这个文件定义了
DEDEROOT和cfg_cmspath等路径。 - 找到类似下面这行代码:
define('DEDEROOT', dirname(__FILE__).'/'); - 这行通常不需要修改,因为它定义的是
include目录的相对路径。 - 更重要的是检查
cfg_cmspath,它通常在/data/config.cache.inc.php文件中定义,但我们不建议直接修改它,修改/include/config_base.php是更根本的方法。
- 这个文件定义了
-
修改
/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 根目录。
-
修改缓存目录
- 在 DedeCMS 后台,【系统】-> 【核心设置】。
- 找到 “模板缓存目录” 选项,将其修改为你的新
data目录下的一个子目录,/var/www/data/cache/。 - 保存设置,系统会自动在新的位置创建缓存目录。
-
修改会话目录 (可选)
- 在 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/
第五步:验证和测试
- 前台访问测试:打开你的网站首页,检查是否正常显示,图片、CSS、JS 是否加载正常。
- 后台访问测试:访问你的网站后台(如
你的域名/dede/login.php),尝试登录,检查各项功能是否正常。 - 功能测试:
- 发布一篇新文章,检查是否生成成功。
- 清理一下系统缓存,看是否报错。
- 检查首页、列表页、内容页是否都正常。
- 安全测试:
- 在浏览器中直接访问你原来的
data目录的 URL(如你的域名/data/)。 - 如果你使用了软链接或修改了配置,这个页面应该会显示 403 Forbidden 或 404 Not Found,这才是正确的!如果仍然能列出文件,说明操作失败。
- 在浏览器中直接访问你原来的
总结与最佳实践
| 方法 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|
| 创建软链接 | 无侵入性,升级无忧,操作简单,最安全。 | 依赖服务器支持创建符号链接的权限。 | ⭐⭐⭐⭐⭐ (强烈推荐) |
| 修改配置文件 | 不依赖服务器权限,灵活性高。 | 侵入性强,每次升级后都可能需要重新修改,容易出错。 | ⭐⭐ (不推荐,除非万不得已) |
最终建议:优先使用 软链接 的方法,这是最专业、最省心、最安全的做法,只有在服务器环境受限时,才考虑修改配置文件。
完成以上所有步骤并验证无误后,你的 DedeCMS 网站的 data 目录就成功迁移到安全位置了。
