织梦转移附件目录,图片迁移到OSS存储
织梦转移附件目录并迁移图片到OSS存储,核心就三件事:先把附件目录配置改对,再把历史图片物理搬过去,最后让前台图片地址指向OSS域名。
做完后附件读写不再占用本地磁盘,图片走对象存储带宽,服务器压力会明显下降。
本文按零基础可执行顺序展开,命令和后台路径都写清楚。
先判断现状和准备条件
动手前确认几个信息,避免改完图片全裂:
- 织梦版本和附件设置路径:登录后台,进入
系统→系统基本参数→附件设置,记下当前的附件保存形式和附件目录。 - 服务器上的实际附件目录,常见是
/www/wwwroot/你的站点/uploads,用ls -lh /www/wwwroot/你的站点/uploads | head确认有文件。 - 数据库信息:在
data/common.inc.php里能看到数据库名、用户名、密码、表前缀。 - OSS 侧准备:一个 Bucket、AccessKey ID 和 Secret、以及绑定好的自定义域名(CNAME 到 OSS 外网地址)。建议先在 OSS 控制台确认读写权限为公共读。
关键结论:迁移前一定要先备份,附件目录和数据库缺一不可,出错时才有退路。
备份数据库和附件目录
在服务器上执行,路径按实际替换:
cd /www/wwwroot/你的站点
tar -czf /root/uploads_backup_$(date +%F).tar.gz uploads
mysqldump -u数据库用户 -p数据库密码 数据库名 > /root/dede_$(date +%F).sql
执行后检查两个文件大小,ls -lh /root/uploads_backup_*.tar.gz 不为 0 才算成功。
数据库备份也可用宝塔面板 数据库 → 备份 完成。
修改附件目录配置
这一步解决“新上传的图片存哪里”。
进入后台 系统 → 系统基本参数 → 附件设置:
附件保存形式:选择按Ymd或按Ym分目录,便于后续同步。附件目录:填新的相对路径,例如/uploads。- 保存后,到
系统→附件管理上传一张测试图,确认新文件写进目标目录。
如果想让附件直接写到 OSS,需要安装支持 OSS 的织梦上传插件,并在插件里填 Bucket、Endpoint、AccessKey。
插件配置项以你所用插件说明为准,不同插件字段名会有差异。
把历史图片同步到OSS
历史附件不会因为改了配置自动上云,需要手动同步。
推荐用 ossutil 或 rclone 这类命令行工具:
# 以 ossutil 为例,先配置
ossutil config
# 然后同步整个 uploads 目录
ossutil cp -r /www/wwwroot/你的站点/uploads oss://你的bucket/uploads --update
同步完成后,在 OSS 控制台抽查几张图片能否通过外网地址直接打开。同步是增量操作,重复执行不会重复上传同名文件,可以放心多跑几次。
替换文章和附件表里的图片地址
图片文件搬走了,但数据库里还记着旧域名,必须替换。
先查再改:
SELECT COUNT(*) FROM dede_archives WHERE body LIKE '%旧域名/uploads%';
确认数量后执行替换,表前缀按实际调整:
UPDATE dede_archives SET body = REPLACE(body,'http://旧域名/uploads','https://oss域名/uploads');
UPDATE dede_addonarticle SET body = REPLACE(body,'http://旧域名/uploads','https://oss域名/uploads');
UPDATE dede_uploads SET url = REPLACE(url,'http://旧域名/uploads','https://oss域名/uploads');
改完进后台 系统 → 更新缓存,再到 生成 → 更新HTML 重新生成栏目和文章页,前台图片才会指向新地址。
避坑与验证清单
- 只改配置不同步文件:新图进 OSS、老图仍指本地,容易出现一半能看一半裂图。
- 数据库替换漏表:正文在
dede_addonarticle,附件记录在dede_uploads,只改一张表会残留旧链接。 - OSS 权限没开公共读:图片地址能访问但返回 403,前台表现为裂图。
- HTTPS 混用:站点是 https,OSS 域名却用 http,浏览器会拦截混合内容。
- 验证方式:随机打开 3 到 5 篇带图文章,右键查看图片地址是否为 OSS 域名,并在浏览器开发者工具 Network 面板确认状态码为 200。
判断迁移是否成功,看两点即可:新上传图片直接落在 OSS,历史文章图片地址已全部指向 OSS 域名。
常见疑问
附件目录改了,之前生成的缩略图怎么办?
缩略图同样在 uploads 目录内,随整目录同步即可,数据库里的缩略图字段也要一并替换。
迁移后还能改回本地存储吗?
可以,把附件设置改回原目录,再把数据库地址替换回原域名,前提是本地附件没删。
OSS 流量费用怎么控制?
图片是主要流量来源,建议开启 CDN 加速并设置缓存策略,具体计费以云厂商控制台实际显示为准。