Discuz论坛附件存储分离,减轻服务器压力

论坛运行一段时间后,附件目录往往膨胀到几十GB,系统盘被占满,服务器响应变慢甚至无法写入。
本文面向零基础站长,讲解如何通过Discuz自带的远程附件功能,把附件存储分离到另一台服务器或对象存储,从而减轻主服务器压力。
跟着步骤操作,你可以完成从准备到验证的全过程。

适用场景与准备工作

当你的Discuz论坛出现以下情况时,就适合做附件存储分离:

  • 系统盘空间告急,/www/wwwroot/你的论坛/data/attachment 目录体积过大。
  • 附件读写频繁,导致主服务器磁盘IO偏高,页面加载变慢。
  • 希望附件独立备份,或使用单独的存储服务器、NAS、云存储。

准备条件:

  • 一台用于存放附件的远程服务器或支持FTP的存储空间,并已开启FTP服务。
  • 远程存储的FTP地址、端口、用户名、密码、被动模式端口范围。
  • 主服务器上Discuz论坛后台管理员权限,以及宝塔面板或SSH访问权限。
  • 建议先备份数据库和 data/attachment 目录,避免操作失误。

关键结论:附件存储分离本质是把Discuz的附件上传和读取路径从本地改为远程FTP,主服务器只保留程序代码,不再承载附件IO。

配置远程附件:从后台开启FTP存储

登录Discuz后台,依次进入 全局 -> 上传设置 -> 远程附件

  • 开启远程附件:选择“是”。
  • 远程附件地址:填写远程存储的访问URL,例如 http://附件服务器IP或域名/attachment
  • FTP服务器地址:填写远程服务器IP。
  • FTP端口:默认21,若修改过请填写实际端口。
  • FTP账号、FTP密码:填写具有写入权限的FTP账号。
  • 被动模式:一般选择“是”,如果连接失败可尝试“否”。
  • 远程附件目录:填写FTP根目录下的子目录,例如 ./attachment,确保该目录存在且可写。
  • 远程访问URL:填写浏览器能访问到的附件URL,例如 http://附件服务器IP/attachment
  • 超时时间:保持默认或适当调大,如30秒。

填写完成后点击“测试远程附件”,如果提示成功,说明FTP连接和目录权限正常。

如果使用宝塔面板,可以在“网站”->“FTP”中创建FTP账号,并确保远程服务器防火墙放行被动模式端口范围。

判断条件:测试远程附件成功,且远程目录出现测试文件,才代表配置正确。

迁移历史附件与修改本地路径

新上传的附件会自动存到远程,但历史附件还在主服务器上。
需要手动迁移:

  1. 通过SSH或宝塔文件管理,进入主服务器附件目录:/www/wwwroot/你的论坛/data/attachment
  2. 将该目录下所有文件下载或使用rsync同步到远程FTP目录。例如:
   rsync -avz /www/wwwroot/你的论坛/data/attachment/ ftpuser@远程IP:/远程附件目录/

如果没有rsync,可以用FTP工具上传。

  1. 迁移完成后,为了节省主服务器空间,可以删除本地附件文件,但建议先保留一份备份。
  2. 进入Discuz后台 -> 全局 -> 上传设置 -> 远程附件,确认“本地附件保留”选择“否”,这样后续上传不再写本地。

注意:迁移过程中不要更改附件目录结构,否则数据库中的附件路径会失效。

避坑指南:常见错误与处理

  • 测试远程附件失败:检查FTP账号密码、被动模式端口、远程目录权限。宝塔面板需放行39000-40000端口。
  • 附件上传后无法显示:检查“远程访问URL”是否可公开访问,以及远程服务器是否允许跨域(一般不需要)。
  • 历史附件打不开:确认迁移时文件路径与数据库记录一致,必要时批量更新数据库中的附件路径。
  • 性能反而变慢:如果远程存储网络延迟高,附件加载会变慢。建议附件服务器与主服务器同内网或使用CDN。
  • 备份策略:远程附件也需要定期备份,不要认为分离后就万事大吉。

关键结论:远程附件配置成功后,务必测试上传和访问,并检查历史附件是否正常显示。

效果验证与后续优化

完成以上步骤后,进行验证:

  • 在主服务器查看 data/attachment 目录,新上传附件不应再写入本地。
  • 在论坛发帖上传一张图片,检查图片URL是否指向远程地址。
  • 使用 df -h 查看主服务器磁盘空间,确认系统盘压力下降。
  • 打开几个历史附件帖子,确认图片和附件能正常下载。

如果一切正常,附件存储分离就完成了。
后续可以进一步优化:

  • 为远程附件服务器配置CDN,加速附件访问。
  • 定期清理远程附件的冗余文件。
  • 监控远程存储的磁盘使用率,避免再次写满。

最终结果:主服务器只处理动态请求,附件IO由独立存储承担,服务器压力明显减轻。

常见疑问

远程附件支持HTTPS吗?
支持。只需将远程访问URL改为 https:// 开头,并确保远程服务器证书有效。

必须用FTP吗?可以用对象存储吗?
Discuz原生只支持FTP方式,但可以通过插件或二次开发对接对象存储。如果不想用FTP,可考虑第三方插件。

迁移后数据库里的附件路径要改吗?
如果远程目录结构与本地一致,通常不需要改。若路径不同,需要批量替换数据库中的附件路径。

附件分离后,论坛备份怎么做?
程序和数据库仍备份在主服务器,附件需单独备份远程存储。建议设置定时任务同步远程附件到备份服务器。

分享到:
上一篇
PageAdmin站点静态化设置
下一篇
Discuz帖子防灌水,风控策略配置
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意