WordPress 是使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设属于自己的网站,也可以把 WordPress 当作一个内容管理系统(CMS)来使用。
WordPress 功能强大、扩展性强,这主要得益于其插件众多,易于扩充功能,基本上一个完整网站该有的功能,通过其第三方插件都能实现所有功能。
简介
这篇文章我们来介绍一下通过使用插件实现远程附件功能,将 WordPress 的媒体库附件存储在腾讯云COS上
腾讯云 COS 具有高扩展性、低成本、可靠和安全等特点,将媒体库附件保存在 COS 上有以下好处:
- 附件将拥有更高的可靠性;
- 用户查看图片附件时将直连 COS 服务器,不占用您服务器的下行带宽/流量,用户访问速度更快;
- 可配合腾讯云 CDN 进一步提升用户查看图片附件的速度,优化网站访问速度。
准备工作
1. 搭建 WordPress 博客平台
- 可以在 WordPress 官方页面 下载 WordPress 的最新版并查看安装指南
- 或者在安装服务器系统时在镜像市场中选择预装 WordPress博客平台 的 CVM 镜像
2. 创建一个公有读私有写的存储桶,存储桶的地域建议与运行 WordPress 博客平台的 CVM 的地域相同,创建详情请参见 创建存储桶 文档
3. 在存储桶列表中找到刚刚创建的存储桶,并单击配置管理
4. 单击左侧的基础配置
,查看访问域名并记录
5. 访问 WordPress 后台,访问插件-安装插件页面 /wp-admin/plugin-install.php
,安装插件
- 从 Github 或 WordPress Plugins 下载最新 releases 源码,通过 WordPress 后台上传安装,或者直接将源码上传到 WordPress 插件目录
wp-content/plugins
,然后在后台启用 - 后台搜索
Sync QCloud COS
进行安装(推荐使用)
配置Sync Qcloud COS插件
1. 在 WordPress 后台管理左侧导航栏设置
下腾讯云COS设置
,点击进入设置页面,配置说明见下表
配置项 | 配置值 |
---|---|
存储桶名称 | 创建存储桶时自定义的名称 |
存储桶地域 | 创建存储桶时所选择的地域 |
APP ID | 开发商 APPID,创建存储桶时名称后的ID |
SecretID | 前往「云 API 密钥」进行获取 |
SecretKey | 前往「云 API 密钥」进行获取 |
不上传缩略图 | 勾选后不会上传对应的缩略图文件,建议不勾选 |
不在本地保留备份 | 勾选后不会在本地保留原文件,建议不勾选 |
本地文件夹 | 本地保存路径,例wp-content/uploads |
不在本地保留备份 | 勾选后不会在本地保留原文件,建议不勾选 |
URL前缀 | COS访问域名/本地文件夹,例https://media-10000000.cos.ap-shanghai.myqcloud.com/wp-content/uploads |
2. 填写完成后点击保存更新即可
3. 测试上传一个新文件,查看附件详情,查看附件图片的 URL,确认附件图片的 URL 指向腾讯云 COS
如果以上是成功的,那么就需要同步旧资源到COS存储桶当中,可以使用COSCMD或者COS Migration,否则后台无法正常预览旧资源;同步完成以后,可以开启回源设置,参考下文的设置回源。
扩展
1. 使用 CDN 加速访问
存储桶如果需要配置 CDN 加速,可参见 CDN 加速配置 文档
在插件设置中将URL前缀修改为默认 CDN 加速域名或自定义加速域名即可
2. 替换数据库中的资源地址
如果不是新创建的站点,数据库当中必定是旧的资源链接地址,我们需要替换一下,插件提供了替换功能,在首次替换前记得备份
旧域名填写原资源域名,如https://qq52o.me/
新域名填写现在的资源域名,如https://img.qq52o.me/
3. 设置跨域访问
在文章中引用对应的资源链接,控制台会提示跨域的错误 No 'Access-Control-Allow-Origin' header is present on the requested resource
. 原因是没有添加 header
需要你的 COS 源的 CDN 中添加 HTTP Header 配置
Access-Control-Allow-Origin:*
或者只允许你自己的域名
Access-Control-Allow-Origin:https://qq52o.me
在存储桶的基础设置中设置 跨域访问CORS
,详细请查看对应文档 设置跨域访问
4. 设置回源
如果不在WordPress后台媒体库处上传资源,建议开启回源设置,详细请查看对应文档设置回源
开启之后,客户端首次访问COS源文件时,COS 发现无法命中对象时,对客户端返回 302 HTTP 状态码并跳转至回源地址对应的地址,此时对象由源站提供给客户端,保证访问。同时 COS 从源站复制该文件并保存至存储桶对应的目录中;第二次访问时 COS 直接命中对象并返回给客户端。
因为WordPress设计问题,在后台媒体库上传资源会占用文章ID,所以我一般是不在后台上传的
写在最后
项目地址:Github 支持请点Star
我不在wp后台上传资源,我在cos上传资源,我开启回源又有什么作用?cos已经有资源了为什么还会回源?如果cos没有资源,你又没在wp后台上传资源,回源上哪找资源 ?
@AD 你自己配置的回源站点地址,访问时不存在就去你的地址获取,没有那就404呗。
感谢大哥的开发,支持你
/wp-content/uploads/2024/03/20240314055715939-283×300.png
上传的图片 复制地址可以打开,但是网站内不显示。
图片地址后台会多一个尺寸 无法访问
prnt.sc/mb5KI91txuJ9
上传的图片 复制地址可以打开,但是网站内不显示。
图片地址后台会多一个尺寸 无法访问
@hayden 你开了防盗链,有referer限制
可以正常上传图片,桶内图片也有也可以打开,wordpress就是不显示,复制打开也是不显示。
AccessDenied
Access Denied.
@hayden 提示AccessDenied已经很明显了,检查一下桶设置,公读私写,防盗链之类的。
一直提示SecretID 或 SecretKey 有误,请检查配置信息!我的是新加坡区域
@阿健 和地域无关,提示错误就是有错误,检查下配置吧,appid之类的
大佬你好,URL前缀 COS访问域名/本地文件夹,我是按照这个举例填入的,然后尝试上传了一张图片到自媒体库,图片不显示,但图片指向地址是对的,腾讯云存储桶中的文件夹里也有的,双击也能打开看到图片,wordpress的自媒体库内上传的就是不显示。
@十一 媒体库里复制url到浏览器访问看看
@十一 我出现同样的问题
@alan 检查链接配置,防盗链之类的问题。
@沈唁 解决了,麻烦了,是url地址问题
开启了原图保护,加了后缀,只有文章里面才会显示后缀。
后台素材库里不显示,主页缩略图也不显示,写文章时markdown也不显示,因为它们无法自动带上后缀。 这个有得解决嘛?
@糨为 需要加个function,在后台追加下后缀
我的网站前台上传mp4文件会无法同步到COS,后台上传可以同步啥问题。wordpress程序
@星落 不支持前台上传。
插件好像不能上传MP4视频
@回忆 支持上传。
@沈唁 我这里显示错误
@沈唁 显示“3b7b6d076a202036.mp4”上传失败。
无法将上传的文件移动至wordpress/uploads/2022/12。
@回忆 检查你文件目录权限的问题
禁用之后好像不会恢复原域名
@五十 需要自己替换数据库里的链接,和修改url前缀为原域名。
大大帮忙看看,感谢您,按照教程配置以后,截图粘贴到写文章当中不能上传到腾讯云当中,但是通过同步功能可以正常上传到云端
@daibaobao 没支持这种粘贴功能,只支持从媒体库中上传