一、结论
网站附件服务器空间不足时,无需升级原有服务器硬件,优先选择将静态附件迁移到兼容S3协议的对象存储服务即可实现灵活扩容,整个过程只需要完成S3存储接入配置、附件迁移和链接规则调整即可上线。接入S3存储通常需要提前准备Endpoint、AccessKey、SecretKey、Bucket、Region等核心信息,在网站程序对应的S3兼容插件中填写测试即可完成对接。
二、准备工作
操作前需要提前准备好以下内容:
- 兼容S3协议的对象存储服务账号
- 提前创建完成的存储桶Bucket,已配置对应访问权限
- 对象存储服务提供的Endpoint访问地址
- 对象存储账号对应的AccessKey访问密钥
- 与AccessKey匹配的SecretKey密钥
- 对象存储服务对应节点的Region地域标识
- 所用网站程序对应的S3兼容存储插件(如WordPress S3上传插件、Halo对象存储插件等)
- 原有服务器上待迁移的网站附件全量备份
- 已备案的自定义域名(用于绑定存储桶做附件访问入口)
三、操作步骤
1. 创建并配置存储桶:在对象存储控制台创建新的存储桶,将访问权限设置为公共读(网站附件需要公开访问),提前将自定义域名解析到存储桶对应的CNAME地址,结果是得到可用的存储桶和可访问的自定义域名。
2. 获取S3接入信息:在对象存储控制台的密钥管理页面,获取Endpoint、AccessKey、SecretKey、Region信息,妥善保存避免泄露,结果是拿到所有需要的配置参数。
3. 安装启用S3兼容插件:登录网站后台,搜索对应程序的S3兼容存储插件并安装激活,若是Halo、Cloudreve等自带S3接入功能的程序,直接进入存储配置页面即可,结果是进入S3配置界面。
4. 填写S3配置参数:在配置页依次填入之前获取的Endpoint、AccessKey、SecretKey、Bucket名称、Region信息,同时设置附件上传路径规则、访问域名前缀为绑定的自定义域名,结果是所有配置项填写完成。
5. 测试连接可用性:保存配置后点击插件自带的连接测试功能,上传一张测试图片,确认测试文件可以通过自定义域名正常访问,结果是连接测试通过,上传下载功能正常。
6. 批量迁移历史附件:使用对象存储提供的迁移工具,或者插件自带的批量迁移功能,将原有服务器上的历史附件全量上传到存储桶中,过程中保持路径和原有服务器的附件路径一致,结果是所有历史附件同步完成。
7. 切换附件调用规则:修改网站程序的附件调用配置,将原有本地服务器的附件路径前缀替换为对象存储的自定义域名前缀,遍历全站测试图片、文档、视频等附件的访问情况,结果是全站附件无404错误,访问正常。
8. 释放服务器空间:确认所有附件访问稳定24小时以上无异常后,删除原有服务器上的附件文件,结果是服务器磁盘空间得到释放,扩容完成。
四、常见错误
1. Endpoint填写错误:容易出现手动输入多写字符、http/https协议选择错误、混淆内网和外网地址的问题,解决办法是直接从对象存储控制台复制官方提供的外网Endpoint,不要手动输入,同时确认协议和自定义域名的访问协议一致。
2. AccessKey或SecretKey填错:复制时多带空格、少选字符或者密钥过期都会导致验证失败,解决办法是重新生成一组新的AccessKey,完整复制粘贴密钥内容,不要手动修改,同时确认密钥处于启用状态。
3. Bucket名称不一致:配置时大小写写错、多写后缀都会提示存储桶不存在,解决办法是直接从控制台复制存储桶的准确名称,注意大小写完全匹配。
4. 权限不足上传失败:存储桶设置为私有读写、AccessKey没有分配存储桶的读写权限都会导致上传失败,解决办法是将存储桶访问权限调整为公共读,同时给对应AccessKey分配存储桶的读写权限。
5. 上传成功但访问404:自定义域名解析未生效、存储桶跨域配置未添加网站域名都会导致访问失败,解决办法是检查域名解析的CNAME记录是否正确,同时在存储桶的跨域CORS配置中添加自己的网站域名,开放GET请求权限。
6. 历史附件访问404:迁移时文件路径和插件设置的上传路径不一致会导致链接不匹配,解决办法是调整插件的路径前缀配置,或者批量修改存储桶内的文件路径,保持和原有服务器的路径规则一致。
五、示例说明
以下为通用S3接入配置示例,所有信息需替换为自己所用对象存储服务的真实参数:
- Endpoint:填写对象存储服务官方提供的外网访问地址,不要使用内网地址
- AccessKey:填写你在对象存储控制台创建的访问密钥ID
- SecretKey:填写和AccessKey对应的密钥字符串
- Bucket:填写你提前创建的存储桶名称,大小写完全匹配
- Region:根据对象存储服务的要求填写对应地域标识,部分程序无要求可留空或填默认值
- 访问域名前缀:填写绑定到存储桶的自定义域名,格式为
https://你的域名 - 上传路径规则:保持和原有网站的附件路径一致,比如WordPress可设置为
wp-content/uploads/
六、更简单的方案
如果不想自己搭建MinIO等自建对象存储服务,也不想额外采购服务器扩容本地存储,更不想花时间维护存储集群、处理硬件故障,可以直接选择成熟的兼容S3协议的云对象存储服务,无需自己运维,按需付费成本更低,扩容没有上限。如果你需要一个兼容S3协议、适合网站附件存储、图片视频分发、不限流量下载的对象存储服务,可以了解 七彩云对象存储,开箱即用,支持WordPress、Halo、各类CMS系统的S3插件直接接入,不需要额外开发成本。
七、FAQ
1. 扩容后原有服务器上的附件可以直接删除吗?
确认所有历史附件已经成功迁移到对象存储,且全站附件访问稳定24小时以上无异常后,就可以删除原有服务器上的附件文件释放空间,建议删除前先做好附件的异地备份,避免出现问题可以快速回滚。
2. 接入对象存储后会影响网站的访问速度吗?
不会,正规的对象存储服务都自带多节点CDN加速,附件会从用户就近的节点加载,反而比从单台源服务器加载的速度更快,同时还能降低源服务器的带宽压力,提升用户访问体验。
3. 我用的网站程序没有自带S3接入功能怎么办?
绝大多数主流的CMS、博客、资源站、下载站程序都有第三方开源的S3兼容插件,直接在程序的插件市场搜索即可找到,安装插件后就能完成接入,不需要修改程序核心代码。
4. 附件迁移过程需要暂停网站吗?
不需要,迁移过程可以先同步历史附件,同步完成后再切换附件调用路径,整个切换过程用户无感知,不需要停站维护,不会影响网站的正常访问。
八、总结
网站附件服务器空间不足的扩容核心思路是将占用空间大的静态附件从本地服务器剥离,转移到可弹性扩容的对象存储服务中,整个流程只需要完成存储桶配置、S3参数填写、连接测试、附件迁移、链接替换几个步骤,不需要升级服务器硬件,成本更低,扩容上限更高。这种方案适合各类博客站、资源站、下载站、图片站、视频站等附件占比高的网站使用,除了释放服务器磁盘空间之外,还能降低服务器的带宽压力,提升用户的访问速度。
想进一步了解这个项目?
访问官网查看产品能力、适用场景和最新服务信息。
访问官网