兰空图床使用体验以及图床迁移解决方案
简介
最近因为图片数开始变多,仓库体积太大,部署开始变慢,想做迁移图床的打算,无独有偶,搜到国内的一个开源云上相册——兰空图床,便开始捣鼓……
使用体验
安装
安装要求:
兰空图床访问域名(可选)
CDN访问域名(使用兰空图床访问域名也可以,此访问域名起到CDN加速效果,推荐使用)
typora
picgo
因为之前装了好几次的php都以失败告终,安装兰空图床不可能再用本地安装了,所以我找到了它的docker版本:wbsu2003/lskypro,尝试了下使用还不错,但是picgo上传失败了,请教博主张时贰才知道版本不对,wbsu2003/lskypro的版本最新只是v1.6.4而已,源码都2.x了,所以我又找了个docker部署的版本:halcyonazure/lsky-pro-docker,这个版本会定时拉取兰空图床最新源码并构建推送到官方镜像源。
1 | docker run -itd --restart=always --name=lskypro -p 9110:80 -v /www/lskypro:/var/www/html halcyonazure/lsky-pro-docker |
里面已经有构建好的php环境,不用再安装php,但是还是需要安装数据库,docker安装可参考我的一篇文章:Docker 搭建 Mysql 环境并允许远程访问,本地安装可以使用我的一键安装脚本:install-mysql-5.7.sh
| 参数 | 解释 |
|---|---|
| -itd | -i以交互式运行容器,-t分配一个伪输入终端,-d后台运行 |
| –restart | always表示重启docker时自动启动容器 |
| -p | 指定端口,格式为 主机(宿主)端口:容器端口 |
| -v | 目录挂载到其他盘,格式主机(宿主)目录:容器目录 |
| –name | 重命名容器名字 |
设置Https反代
因为nginx是安装在服务器的,方便管理,这里也提供一键安装脚本:install-nginx-1.21.3.sh
在/usr/local/nginx/conf/nginx.conf添加以下代码:
1 | #监听kl.shinie.top |
设置好后我遇到了一个资源无法加载的问题:使用兰空图床时无法加载谷歌字体以及解决方法
访问域名

设置数据库和管理员账号密码

安装完成

获取token

首先我们需要获取token才能上传图片,可使用curl来发送post请求获取token:
1 | curl -H "Content-Type: application/json" -X POST -d '{"email": "管理员邮箱", "password":"管理员密码" }' "你的域名/api/v1/tokens" |
配置picgo
需要先安装picgo插件

Server填入域名,Auth token填写上一步获取的token

配置typora
软件链接:https://pan.baidu.com/s/18ZXyZmf3Oj4avrIf15jZwA?pwd=6666 提取码:6666
在文件->偏好设置设置picgo程序:

粘贴图片进去时会提示上传图片

设置CDN
在源站信息配置图床的ip和端口

在储存策略修改访问网址:

一个简单的图床就配置好了
图床迁移解决方案
原方案
原来使用本地图片,存放在ButterflyBoot/source/img,每hexo new一篇文章出来就在ButterflyBoot/source/img新建一个文件夹,文件夹名称使用hexo-abbrlink生成的永久链接,链接的时候使用../img/xxxx/xxx.png格式,既能在typora编辑器上看到,也能在部署后看到图片,但是这样有一个缺陷:仓库体积会因为图片而变得很大,于是才有后面的图床迁移方案。
兰空图床迁移方案
首先在/www/lskypro/storage/app/uploads上传本地的img文件夹

修改文件夹所有者以及文件权限:
1 | chown -R 33 /www/lskypro/storage/app/uploads/img/ |
创建一个储存策略,其中储存路径是/var/www/html/storage/app/uploads/img,img就是上传服务器的图片文件夹名称

测试访问

在vscode一键替换这些图片链接即可

新建文章时可在角色组编辑上传路径为文章链接,如果CDN没了或者链接失效,可以立即回滚到原方案

评价
这次适配可以完美替换本地链接,减少仓库体积,而且不用每次处理图片时都要去tinypng压缩一遍图片再上传
可以看出,本地图片和图床链接区别不大,vscode的一键替换就可以完成,容错率高。

总体来说,此次图床迁移方案非常nice。




