一、结论
网站图片过多占用服务器空间的核心解决思路是将图片存储从本地服务器迁移到兼容S3协议的对象存储服务,通过网站程序的S3兼容配置完成接入,实现图片存储与网站服务的分离,完全不占用原有服务器的磁盘空间,同时还能借助对象存储的分发能力提升图片访问速度。对接S3协议存储通常需要提前准备Endpoint、AccessKey、SecretKey、Bucket、Region等信息,在对应程序的配置项中填写并测试连通即可完成接入。
二、准备工作
操作前需要提前准备以下内容,避免配置过程中反复切换页面遗漏信息:
- 合规的对象存储服务账号
- 提前创建好的存储桶Bucket,用于存放网站图片资源
- 对象存储服务提供的Endpoint访问地址
- 身份验证用的AccessKey(访问密钥ID)
- 与AccessKey配对的SecretKey(访问密钥密码)
- 存储桶对应的Region区域编码
- 所用建站程序支持的S3兼容配置模块或第三方插件,例如WordPress的存储插件、Halo系统自带的存储配置项等
- 站点原有服务器上存储的存量图片文件包
三、操作步骤
每一步操作完成后确认结果正常再进入下一个环节,避免后续出现问题难以排查:
1. 进入对象存储控制台创建存储桶,存储桶权限设置为公共读(确保网站访客可以正常访问图片),操作完成后获得可用的图片存储容器。
2. 在对象存储控制台的密钥管理页面获取S3接入所需的Endpoint、AccessKey、SecretKey、Region信息,复制到本地记事本保存,注意不要泄露密钥信息。
3. 打开自己的网站后台,找到媒体存储、附件存储相关的配置入口:如果是WordPress站点先安装并启用S3存储相关插件,如果是Halo、Typecho等自带S3兼容配置的程序直接进入系统设置的存储管理页面,如果是PicGo、Alist等工具直接新建S3类型存储源,操作完成后进入正确的配置页面。
4. 在配置页选择“S3兼容存储”作为存储源,依次填写之前获取的Endpoint、AccessKey、SecretKey、Bucket名称、Region信息,同时配置图片访问域名(可以用对象存储提供的默认域名,也可以绑定自己的已备案业务域名),操作完成后所有必填参数填写完毕。
5. 保存配置后点击“测试连接”按钮,系统会自动向存储桶上传测试文件并尝试访问,操作完成后确认连接正常、参数填写无误。
6. 上传一张测试图片到网站媒体库,查看图片的存储路径是否已经切换为对象存储的访问地址,点击链接可以正常打开,操作完成后确认新上传的图片已经存储到对象存储、不再占用本地服务器空间。
7. 将原有服务器上存储的存量图片批量迁移到对象存储的对应路径,批量替换数据库中的图片链接前缀为对象存储的访问域名,测试所有历史图片可以正常访问后,删除服务器上的原有图片文件,操作完成后彻底释放服务器被占用的磁盘空间。
四、常见错误
配置过程中如果出现异常,可以对照以下常见问题排查:
- Endpoint填写错误:比如手动输入时多写了后缀、选错了http/https协议,或者填写了错误区域的Endpoint,解决办法是回到对象存储控制台直接复制官方提供的Endpoint地址,不要手动输入,同时确认协议和站点的访问协议保持一致。
- AccessKey或SecretKey填错:复制时多带了前后空格、使用了已经过期被禁用的密钥,解决办法是删除参数前后的多余空白字符,重新生成新的有效密钥填写,密钥信息不要对外泄露。
- Bucket权限不足:存储桶没有开启公共读权限,或者AccessKey对应的账号没有存储桶的读写权限,导致上传成功但图片访问返回403错误,解决办法是进入存储桶的权限设置页面,开启公共读权限,或者配置对应的访问策略允许匿名访问图片资源,同时确认密钥账号有存储桶的读写权限。
- Region填写不匹配:填写了对象存储服务不支持的Region编码,导致连接失败,解决办法是按照控制台给出的Region标识准确填写,部分程序如果没有强制要求可以留空或者填写auto。
- 存量图片路径不匹配:迁移存量图片时没有保持和服务器上原有的存储路径一致,导致历史图片访问返回404,解决办法是迁移时保持目录结构完全和本地一致,同时批量替换数据库中图片链接的前缀为对象存储的访问域名。
- 大体积图片上传失败:上传高清大图时提示上传错误,解决办法是检查存储桶是否设置了单文件上传大小限制,同时调整网站程序的最大上传文件配置、以及PHP等运行环境的上传大小限制。
五、示例说明
以下是通用的S3存储配置字段说明,无需填写虚构的地址或密钥,按照实际获取的信息填写即可:
- 存储类型:选择「S3兼容存储」/「第三方S3存储」
- Endpoint:填写对象存储服务官方提供的访问地址,不要手动修改后缀
- AccessKey:填写你在对象存储控制台生成的访问密钥ID
- SecretKey:填写和AccessKey配对的访问密钥密码
- Bucket:填写你提前创建的存储桶名称,注意大小写完全一致
- Region:填写对象存储服务对应区域的编码,无特殊要求可留空
- 访问域名:填写对象存储提供的默认访问域名,或者自己绑定的已备案业务域名
- 存储路径:可以填写和原有网站图片存储一致的路径,比如
wp-content/uploads/,方便存量图片迁移适配
六、更简单的方案
如果不想自己搭建MinIO等自建存储服务、不想额外维护存储服务器,也不用折腾复杂的集群配置和运维,直接选择成熟的兼容S3协议的云对象存储服务即可,省去运维成本,存储容量可以按需扩容,无需提前预留硬件资源。如果你需要一个兼容S3协议、适合网站图片存储、图床、程序附件存储和下载分发的对象存储服务,可以了解七彩云对象存储,它支持不限流量下载分发,接入门槛低,适合中小站长和开发者使用。
七、FAQ
Q:迁移图片到对象存储之后,会不会影响网站的SEO排名?
A:不会,只要你保证图片可以正常访问,并且图片的alt标签、title标签等属性保持不变,搜索引擎会正常收录相关图片。同时对象存储通常自带CDN加速能力,会提升页面的加载速度,反而对SEO有正向帮助。
Q:我用的是开源网盘程序/资源站程序,也可以用这个方法存储附件吗?
A:可以,目前绝大多数主流的开源建站程序、网盘系统、资源站程序、图床程序都支持S3兼容存储接入,操作步骤和本文介绍的网站图片存储配置逻辑基本一致,只需要在对应程序的存储设置中找到S3配置项即可。
Q:存储在对象存储里的图片有没有丢失的风险?
A:正规的云对象存储服务都会提供多副本冗余存储,数据可靠性远高于单独的服务器硬盘,只要你做好权限配置,不要误删存储桶、开启回收站功能,基本不会出现数据丢失的问题。
Q:能不能只把超过一定大小的图片存储到对象存储,小图片还是存在服务器上?
A:可以,大部分支持S3配置的插件都支持设置文件大小阈值,超过阈值的文件自动上传到对象存储,小文件保留在本地服务器,你可以根据自己的站点需求灵活调整阈值。
八、总结
整体操作流程核心是「准备S3存储资源→配置网站程序对接→测试新文件上传→迁移存量文件释放服务器空间」四个核心环节,不需要改动网站的核心业务逻辑,普通站长1-2小时就能完成全部配置,快速解决网站图片过多占用服务器磁盘空间的问题。同时这个方案还能借助对象存储的分发能力提升图片的访问速度,降低服务器的带宽压力,适合各类个人博客、企业官网、资源站、图片站、下载站等有大量静态资源存储需求的站点使用,接入成本低,后续扩容也不需要调整服务器配置,只需要按需调整对象存储的存储容量即可。
想进一步了解这个项目?
访问官网查看产品能力、适用场景和最新服务信息。
访问官网