很早就有这个思路了,但是一直没有去实践,昨天无聊操作了一把,挺好玩的。
思路大概是这样的:
用户打开网站上传图片,服务器自动通过内网把上传的图片同步到COS,然后直接返回CDN的链接。PS:后台需要设置CDN的。具体看这:给Chevereto图床套上阿里云CDN
思路写的这么不清楚这篇文章注定很乱,没办法。。。
首先你需要有一台腾讯云的服务器,然后创建一个跟服务器同区域的对象存储COS。COS再绑定一个CDN域名供Chevereto使用。
Chevereto后台设置:
仪表盘-设置-外部服务-CDN,选择启用,然后填你的准备给Chevereto准备的CDN域名。
腾讯云对象存储设置:
基础配置-回源设置:填写你的Chevereto图床域名
基础配置-跨域访问CORS设置
CDN这步自己搞定。
这些设置ok了之后,那就是服务器上的配置了。
安装本地同步工具——cos_sync(只说Linux的,Win边玩去)
wget https://mc.qcloudimg.com/static/archive/1f8476f3097d0e4270b6988d7bd65a06/cos_sync.zip
unzip cos_sync.zip && cd cos_sync
配置说明
配置文件位于工具包目录/conf/config.json:
{
"appid" : "xxxxxx",
"secret_id" : "xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"secret_key" : "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"bucket" : "xxxxxx",
"timeout" : "60",
"thread_num" : "20",
"delete_sync" : "1",
"daemon_mode" : "0",
"daemon_interval" : "60",
"enable_https" : "0",
"region" : "gz",
"local_path" : "/home/test/data",
"cos_path" : "/mysyncfolder"
}
划重点:
其中的timeout:300 daemon_mode:1 daemon_interval:1 cos_path:/
名称 | 描述 | 有效值 |
---|---|---|
app_id | 需要进行操作的 APPID,可从控制台获取 | APPID 数字 |
secret_id | APPID 对应的秘钥 ID,可从控制台获取 | 字符串 |
secret_key | APPID 对应的秘钥 Key,可从控制台获取 | 字符串 |
bucket | 指定要同步的 bucket 名称, 需要提前在控制台建立,参考 创建 Bucket。 | 字符串 |
timeout | 连接 COS 的超时时间,在网络状况不佳的情况下可以增大该值。 单位: 秒 |
数字 |
thread_num | 并发的线程数,增大该值可以提高并发度,以及更快的上传速度。减小该值,会降低上传速度。 | 数字 |
delete_sync | 删除本地文件时同步删除 COS 文件。 1:本地删除时同步删除远程文件;0:忽略本地已删除文件 |
数字 |
daemon_mode | 后台进程模式运行。 1:循环运行同步工具; 0:运行一次后退出。 |
数字 |
daemon_interval | 后台进程模式下,检查本地文件变化的时间间隔。 单位:秒 |
数字 |
enable_https | 启用 https 进行传输。 1:使用 https | 0:使用 http |
数字 |
region | bucket所在的区域。如华北天津(tj), 华东上海(sh), 华南广州(gz) | 字符串 |
local_path | 需要同步的本地绝对路径。Windows 路径需用双斜线 \ 分割。 Linux 范例:/home/user/dir Windows 范例:C:\document\dir |
字符串 |
cos_path | 同步到 COS 的目的路径,需以 / 为结尾以表示目录,根目录为 /。 | 字符串 |
执行同步工具
sh start_cos_sync.sh
执行完成后,会输出创建和删除成功与失败的统计,以及全部执行的时间。
结尾
这样之后呢,从图床上传一个文件到服务器,服务器会每秒跟COS同步一次文件,然后就会把你刚刚上传的文件同步过去,然后你设置的CDN就能瞬间访问到这个文件的URL了(如果不这样,那么就要回源,回源要耗费时间,而且腾讯云不支持HTTPS回源)
通俗点讲,就是说图片上传之后,图床提示上传成功,那么返回的文件URL不是你服务器的,而是COS的外链。因为服务器瞬间跟COS同步了,你这一上传,COS那边就有你的文件了,那么这个时候你通过CDN的链接是可以访问到的,如果没同步,那么你访问图片的CDN链接是访问不到的,他会回源。
这么说应该懂了吧,原谅我表达能力不行。。。
本来想把DEMO放出来的,但是想想算了~~~
更多请看:腾讯云
bucket名请一定要使用你创建时的名称而不是在cos控制台看到的名称,例如img在控制台的名称为img-1253968452,只需使用-前面的bucket id无需加入后面的-1253968452
这个 同步是不是不行了,有最新的教程吗?我按操作怎么老是出错。
教程千篇一律,需要注意一些细节。
静态图片站用腾讯云全家桶真不错 😀
😆