个人博客图床 and 批量换URL教程——阿里云对象存储oss+CDN+Picgo-core+Python脚本
本文最后更新于 8 天前,其中的信息可能已经有所发展或是发生改变。

前提:

(1)注册阿里云账号 (2)域名备案完成——这里主要针对CDN,不想搞的可以忽略 备案的域名呢,要准备两个,一个是给网站的,一个是给CDN的,不能共用,否则DNS那里会报错,但一般我们买域名的时候会把www(即子域名)也送给我们,我们可以用这个来搞CDN

教程

登录阿里云

然后搜索对象存储oss,点击官方产品那个 之前搞过的可以直接点击这里的控制台

点击控制台

之前没有开通过的会提示开通,开通后我们就会来到这里

创建bucket

创建好后,我们来到我们的刚创好的bucket页(可以从bucket列表点名字进来)

开启公有读权限

展开权限控制,再点击阻止公共访问进行关闭

我这里关了,一般是开的,我们按照提示关上即可

然后点击旁边的读写权限,点击设置,改成公有读

创建RAM用户

然后我们再点击旁边的RAM,前往RAM控制台

或者把鼠标移至右上角头像,然后点击AccessKey(没开的选这个方式,可以先开一下再前往RAM控制台,详看第二张图)

然后我们点击左边栏的用户,然后点击创建用户

然后我们来到这里(个人信息自己填上,然后其他跟我选一样即可)

创建成功后,先别急着点其他,把上面的AccessKey ID 和 AccessKey Secret保存下来,后面要用到的,而且就出现这一次,要是错过的话,就删除了再填一遍信息吧

然后点击刚新建的用户的右边——添加授权,直接搜索oss,添加与我图片对应的那个授权,确认即可

添加环境变量(要在阿里云搞SDK才要用,否则可忽略,详见下面的”SDK下载”)

按一下键盘的win(就是四个正方形那个),搜索环境变量

我们点进去,然后点击环境变量
选择系统变量,然后点击新建
然后填入 “ALIBABA_CLOUD_ACCESS_KEY_ID” 和 “ALIBABA_CLOUD_ACCESS_KEY_SECRET” 然后对应填入刚刚我们创建用户所给我们的AccessKey ID 和 AccessKey Secret

防盗链设置

为了保护我们的小钱包,毕竟我们的网站一般来说都不是盈利的,纯为爱发电,我们还是把防盗链开开

我们来到我们的bucket,展开数据安全,点击防盗链,然后点击开启防盗链

在白名单内,输入你的域名,即: (1)*.➕你的域名(但是有时候这样不行的,还是建议把你网站的所有域名(包括主域名子域名,包括http和https,能组合一起的全部填上去,否则可能你的网站上显示不了)) (2)也可以顺手把 *.console.aliyun.com 加上去,否则在bucket也看不到你的图片

然后空referer选择允许即可,然后加上上面配置的白名单 意思就是——只有在我们白名单内的网址里才能看到我们在bucket里的图片,然后单独打开图片也能访问到 要是空referer选择不允许的话,可能就无法根据其URL单独访问这张图片,这样就在一定程度上防止了某些有心之人伤害我们的小钱包

然后截断 QueryString:是否在匹配时忽略URL中?之后的查询字符串 一般来说都不用管,允许就行,除非你有特殊需求

然后点击保存,就完成了

CDN配置

首先,我们点击我们的bucket,然后展开bucket配置,然后点击域名管理,再点击绑定域名,进行域名绑定

(因为我的域名已经绑定了,没有多余的展示,各位可以根据系统提示按照下一步操作,若是你的域名已经满足了下面第二张图的四个要求,那么大概能直接添加,否则就得先去你购买服务器的厂商那里按阿里云这边绑定域名的提示/要求设置一下DNS——可能要自己搜DNS进去加,而不是在自己服务器上的DNS解析那里)

绑定好之后,我们先配置一下CDN

个人博客,你可以看情况选择,我的博客我觉得没啥必要开这么贵,有需要再后面改嘛,这里我就选择图片小文件,你们可以按需选择

然后其他就不用怎么动了,下一步即可

这里没啥要改的,除非你的网站人流量大,要很迅速地进行数据更新之类的,可以改一下缓存过期时间,否则没啥必要,直接下一步即可

一般也没啥,range回源这里看自己吧,普通图片一般没必要开,除非你的图片太大了或者有视频啊音频之类的,否则下一步即可

然后就是我们保护小钱包的一些操作

因为我的小网站一般没几个人看,我的配置稍微会保守点,各位可以按照自己网站的流量来具体设置

这里贴一下我的设置,仅供参考

我们设置完成后点击下一步

https还是配置一下吧,否则你的网站用https的话可能会自动给你从http跳https,图片就无法显示,然后黑白名单我已经在防盗链设置了,就不搞什么了

补充

因为这里是后来发现才补充的,我也不知道配置这里是不是一样,我把整个https的配置也放在这里

开启https后,按照自己的实际情况,选择证书来源,这里我直接用我网站的ssl(let‘s encrypt)来顶了,因此我这里选择自定义上传

PS:在阿里云买的话就可以选择第一个,然后展开证书名称,选择后确定即可

然后这里证书名称是随便你起的,随便起一个就行 然后俩密钥你自行去查看你的证书,我这里给出在服务器查找let‘s encrypt的密钥的操作过程

输入命令

sudo certbot certificates

然后最底下应该会出现类似这种

Certificate Path: /etc/letsencrypt/live/你的域名/fullchain.pem 
Private Key Path: /etc/letsencrypt/live/你的域名/privkey.pem

我们随便挑选一个,cd命令切换到

/etc/letsencrypt/live/你的域名

然后使用命令

ls

查看当前文件夹下的东西

应该会有

**`fullchain.pem`** → 放在「证书(公钥)」框里  
**`privkey.pem`** → 放在「私钥」框里

最后使用cat命令输出其内容,复制粘贴到阿里云CDN这里的HTTPS即可 (注:—–BEGIN CERTIFICATE—–和—–END CERTIFICATE—–也都要复制,不要漏了) (私钥貌似不用粘贴也行)

最后建议把这两个开了(这里可能要在CDN控制台——内容分发服务——域名管理——点击你绑定CDN的域名——HTTPS配置里开启)

搞完后点击一键配置即可

然后就是去买域名的厂商那里配置一下DNS

注: 可能需要删除或替换A、mx、CCA类型解析记录后,才填入CNAME记录,否则可能会报错,我们一般把启用状态关闭即可,以免到时候要用的时候不知道搞啥

但是主域名的A我们是不能删的,因为我们的网站还需要靠这个来访问,一旦把主域名的换掉了,我们的网站就会无法访问 因此,我们可以把子域名(如www)关掉,然后利用子域名做CDN,把子域名的记录类型A换成CNAME,记录值也从服务器的ip改为上面提示你要换的记录值,然后开启,等待一段时间让其生效,即可

为了以防万一,我们可以先不将上图页面关闭,先回到bucket—bucket配置—域名管理,看一下我们的配置是否成功(可能要等5-10分钟才生效,快的话一两分钟也行了)

这里我们看到,我们的CDN加速已经配置好了,旁边的域名状态也随着我们添加CDN加速时的DNS后一并 “完成” 了

然后我们点击左上角的三条横杠——产品与服务——网络与CDN——点击CDN分类下的CDN,进入CDN控制台

看到我们CNAME状态显示已配置,状态为正在运行,就OK了

但是呢,还有一步,我们点击右边的管理——缓存配置——修改

然后把缓存开启一下,否则可能到时候配好了还是不能通过CDN访问图片

SDK下载(仅作提醒)

然后我们回到对象存储oss控制台,左侧栏拉到最下,点击SDK下载

这里按照自己的需求选择,不会可以问AI

因为我是打算用Python脚本利用picgo-core去替换我本地图片,而不是直接用 Python 调阿里云 API,因此我这里就不用搞SDK,仅作提醒,有需要的自行去网上查找资料

Picgo Core下载及配置

链接:picgo-core github官网

首先,我们按win,搜索PowerShell,用管理员方式打开

后输入(注意Node.js 版本,PicGo 需要 Node.js 版本 >= 20.19.0 或 >= 22.12.0。对于较旧的 PicGo 版本(= 16 即可)

npm install picgo -g

下载Picgo-core最新版

成功后,输入

picgo --version

如果返回版本号(如 2.0.2),说明安装成功!

然后我们输入

# 1. 配置阿里云(会进入交互式问答)
picgo set uploader aliyun

开始配置我们的图床(阿里云)

然后可能会弹出这个

Enter config name 
>> Config name can not be empty

我们给他起个名字,自己记好即可

然后下面都是一样的,按照提示输入你图床的信息即可,EX.后面是示例

注: (1)accessKeySecret: 是默认隐藏的,你输入后看不见正常

(2)area参考你绑定bucket—域名管理—域名状态添加时的那个DNS——记录类型为CNAME 如果绑定了CDN的话也可以在CDN控制台里看到(详见下图) 应该是跟你服务器所在地是一样的,可以直接看着他给的示例把最后的地区换成你服务器所在地区(但是为了避免后面配错的麻烦,建议还是检查一下)

(3)Path指的是可选的上传路径,可以像下面给的例子一样,会跟在Custom URL的后面返回,同时阿里云那边的bucket也会自动创建一个同名文件夹把你上传的图片放在那里

  • blog/{year}/{month}/
  • 或者简单点:images/
  • 留空也可以

(4)Custom URL是你上传图片后返回给你的域名,看你上传图片后

(这里也可以测试一下能不能上传到图床,在bucket——文件管理——文件列表——上传文件,成功上传后,点击图片名,看他返回的URL。

没搞CDN的一般是
https://bucket名.oss-cn-地区.aliyuncs.com ,按照自己的复制上去即可 不行的话就换成 http:// 开头,即关闭下面的使用https即可,下面CDN同理 (但是这种情况一般不会,我也没遇到过)

要是你配置了CDN,点击域名下的自定义域名,选择你绑定了CDN的那个子域名,然后看下面的URL,对应复制上去。 绑定了CDN,一般就填写 https:// ➕ 你绑定CDN的那个子域名即可 但如果CDN没上传ssl证书,就写http://➕你CDN配置时绑定的子域名,否则可能访问不了)

随意选择上传的一张图片,这俩任意点一个,其他图片的URL返回都会遵循同样的规则 即:你这张图选择了以CDN的域名返回,则其他图也会自动选择CDN的域名 (但是另一个域名也可以访问,只是说你这张图选择完域名后,在图片详细这里切到其他的图也是自动选择了这个域名,但是我们不必纠结这个,看你Custom URL怎么配就行,只要返回的URL能访问即可)

然后我们访问一下相应的URL,要是能访问,证明可以,若是不能访问,可能得排查一下防盗链等问题,一般是防盗链的空referer没有设置为允许(若是外部域名)

注:

  • 直接访问外部域名的链接会直接下载图片
  • 访问自定义域名(CDN)的链接则会直接出现图片,不用下载

(5)URL Suffix是可选配置用于给图片链接添加 OSS 图片处理参数(比如压缩、裁剪、水印等),看你自己,我这边选择留空

配置完后,看到 Activated config successfully!即配置成功

然后我们继续

# 2. 设为默认上传器
picgo use uploader aliyun

配置完后,看到 Activated config successfully!即配置成功

然后我们测试一下,配置到底有没有成功

我们先把服务开一下

picgo server

你会看到

Listening at http://127.0.0.1:36677

这就是我们的默认端口,也是我们Python 脚本要调用的接口

然后我们进行测试一下,上传一张图片上去看看是否成功

picgo upload <你上传图片的地址>

要是出现


<Code>SignatureDoesNotMatch 
The request signature we calculated does not match the signature you provided.

你就得考虑一下是不是配置错了,还是权限没开

(1)如果是配置错了,你搜索一下文件,以下是默认地址 PS:我配置的时候已经是复制过去的,但是还是给我Secret后面改了一串,可以仔细核验一下

C:\Users\Lenovo\.picgo

然后用记事本打开文件夹里的config.json,检查有没有错误

(2)权限问题,回到上面的——创建RAM用户最后,看看有没有把权限开好

确定好后 如果你之前运行了 picgo server关闭它再重新启动

# 先 Ctrl+C 停止旧服务
picgo server

然后再进行测试 最后显示 SUCCESS 即为上传成功,然后他会返回相应URL给你

我们再回到我们的bucket——文件管理——文件列表,即可看到我们的图片是否上传成功(如果在防盗链设置了白名单,可以把*.console.aliyun.com加上,否则在这里也是看不到图片的)

脚本

最后,按照自己的要求,向AI说出你的需求,让他生成一个python脚本给你,然后测试完(记得不要用源文件测/没有给文件备份哦,否则追悔莫及,本文章概不负责),就可以享受一键换URL的服务了

反正基本逻辑就是自己手动开picgo server,然后脚本遍历一下md文件里的内容,匹配一下本地图片,告诉他图片放在哪了,让他匹配到图片后知道该去哪里找图片,然后他找到图片,利用命令上传

picgo upload <你上传图片的地址>

最后把返回的URL插回去相应地方,把原来图片删掉,就OK了 (按照自己的需求,相应修改即可)

提醒

有学生认证的话可以认证一下,每年都可以领取300元优惠券 ECS服务器和对象存储oss也都可以抵扣的(按量付费产生的费用),CDN好像不行

可以搜索:阿里云高校支持计划——云工开物

如果没有的话记得购买资源包哦,按量付费还是有点小贵,没有那么划算

默认是按量付费的,要是你的网站访问量不高,大可先用一段时间按量付费,然后推算出要不要买资源包,以及哪种资源包是更适合自己的

感谢阅读!如果你觉得这篇文章对你有帮助,欢迎扫码赞赏支持,你的鼓励是我持续创作的动力 ❤️

本文为原创内容,转载请注明出处。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇