Typecho开启对象存储,图片上传到OSS
很多用 Typecho 搭建博客的朋友,一开始把图片存在服务器本地,时间一长磁盘空间吃紧,图片加载也拖慢页面。
把图片上传到阿里云 OSS 这类对象存储,既能省服务器空间,又能借 CDN 加速访问。
下面按零基础也能照做的节奏,讲清 Typecho 开启对象存储的完整流程。
开始前先确认三件事
动手前先检查环境,避免中途卡住。
- Typecho 版本:建议 1.2 或更高,老版本可能不支持新版插件。后台
控制台 -> 关于可看版本号。 - 服务器权限:能通过 SSH 或宝塔面板操作网站根目录,通常路径是
/www/wwwroot/你的域名。 - 阿里云 OSS 准备:已开通 OSS 并创建好 Bucket,记下
Bucket 名称、Endpoint(地域节点)和一对AccessKey ID / Secret。建议在 RAM 访问控制里创建一个只授权该 Bucket 读写权限的子账号,不要直接用主账号密钥。
AccessKey Secret 只在创建时显示一次,务必先保存好。
安装并启用上传插件
Typecho 本身没有内置对象存储功能,需要借助插件。
常用的有 Typecho-Plugin-OSS 等第三方插件,从 GitHub 或作者页面下载后,把插件文件夹整个上传到:
/usr/plugins/
然后在后台 控制台 -> 插件 找到它,点击“启用”。
如果列表里看不到,多半是文件夹名或目录层级不对,确认插件目录下直接是 PHP 文件,而不是多套了一层文件夹。
填写 OSS 连接参数
启用后进入插件设置页,按下面几项填写:
- AccessKey ID / Secret:填 RAM 子账号的那一对。
- Bucket 名称:你创建的 Bucket 名,注意区分大小写。
- Endpoint:例如
oss-cn-hangzhou.aliyuncs.com,具体以 OSS 控制台显示的为准。 - 自定义域名:如果绑了 CDN 或自有域名,填在这里;没绑就留空,插件会用 OSS 默认域名。
- 存储目录:可填
typecho/之类的前缀,方便和别的项目隔离。
保存后,插件一般会在你上传图片时自动接管,把文件传到 OSS 并替换文章里的图片地址。
容易踩坑的几个地方
上传报 403 或 AccessDenied:
先查 RAM 子账号是否真的授予了该 Bucket 的 PutObject、GetObject 权限,
再看 Endpoint 和 Bucket 地域是否匹配。
图片能传但打不开:Bucket 读写权限如果是“私有”,外链无法直接访问。
要么改为“公共读”,要么用 CDN 回源并配置签名。
公开博客通常选公共读更省事。
后台提示上传失败但无具体信息:
打开 Typecho 根目录 config.inc.php,
把 define('__TYPECHO_DEBUG__', true); 加进去,
刷新后再上传,
页面会显示具体错误,
便于定位。
旧图片不会自动迁移:插件只处理新上传的图片。
历史图片需要自己用 ossutil 等工具批量上传,再替换数据库里的旧链接,操作前务必备份数据库。
验证是否真的上传成功
传一张测试图到文章里,发布后做两步检查:
- 在文章页右键查看图片地址,域名应该是你的 OSS 域名或自定义 CDN 域名,而不是博客主域名。
- 登录 OSS 控制台,进入对应 Bucket,能看到
typecho/目录下多出刚上传的文件。
两步都对,说明 Typecho 图片上传到 OSS 已经生效。
几个常见疑问
图片地址还是本地域名怎么办?
检查插件是否启用、参数是否填全,并清一次 Typecho 缓存和浏览器缓存。
能换成腾讯云 COS 或七牛吗?
可以,原理一样,换对应厂商的插件并填写各自的密钥和 Endpoint 即可。
开了对象存储还需要服务器备份吗?
需要。OSS 存的是图片附件,数据库和 Typecho 程序文件仍要定期备份,两者不能互相替代。
整体来看,Typecho 开启对象存储并不复杂,核心就是插件启用、密钥权限、Bucket 读写权限这三处别填错。
按本文步骤走完并验证通过后,图片就会自动上传到 OSS,服务器磁盘压力和页面加载速度都会有明显改善。