先来张图片看下效果
可以看到加载还是很快的啊~(图片已压缩,大小400多KB)
# 前言
Update: Lsky Pro 的新版简略教程在这
然后为自己的图床打个广告: 图床地址: https://img.akass.cn
纯收费图床,价格基本为成本价。就是指望用户多起来之后能有议价权,那时候才有一定利润。具体价格可见这篇文章
老规矩,说下为啥要自建图床。
现如今,公共图床有不少,免费的也很多。知名的有SM.MS图床,路过图床,ImgURL等等 但我都觉得或多或少有些慢,并且万一哪天不再提供服务了,大量图片迁移必定费时费力。 而自己搭建的图床自己心中有数,虽然成本高上不少,但却足够稳定,心中有数。
讲真,我这点小博客哪有人来看呐,花费应该是很少的。
多图警告!
# 方案
我的图床选用的是自建前端的方案,并且存储策略选为腾讯云COS。
大致原理如图:
# 开始
首先咱得有个腾讯云账号,这里就不展开了。我用的腾讯云全家桶,其他平台步骤也大差不差。
# 前端搭建
# 寻找
肯定用现成的程序,不然等写好图床我估计大学都毕业了(笑)。
那就找罢。
首先找到了auxpi,看着是很舒服的。但是端详许久发现它竟然是调用其他图床api来上传的,也就是说图片上传到了其他图床去,这与我的想法是不吻合的。
于是继续寻找。
然后我便发现了Chevereto。免费版足够使用了,但是免费版不支持使用其他存储策略,仅能存储在本地,COS挂载到本地也是可以的,也不是特别麻烦,麻烦的就是配置Chevereto的存储位置。免费版不行那就去看看完整版的许可证多少钱吧。好家伙一看39美元,对于我来说还是太贵了,我就自己用用,为啥要花这么多,更何况我难以承受如此高昂的授权费用。
那就再找罢。
便发现了Lsky Pro,兰空图床。开源,免费。支持第三方存储策略,完美。
它还支持一键部署至腾讯云开发,但是我嫌腾讯云函数有点慢,而且收费点有些多,虽然是按用量收费,但收费的项目多,看着一排排的收费项会比较难受。于是我部署在了腾讯云轻量上,2C4G8M,性能足够。(?
# 正式搭建
我是个懒人,能有GUI就用GUI,于是——宝塔!该你上了!
装完宝塔,就一套LNMP整上。用宝塔安装就非常的省心啊,动动手指就完成了,非常舒服。 这里安装的是Nginx 1.20.1,MySQL 8,PHP 7.4,不用8的原因是之前使用PHP8碰到了些无解的BUG,已经有人提交了Issue,下个版本应该会修复。
装好后过来网站
页面,“添加站点”,非常方便。
配置如图:
进入网站目录,上传Lsky Pro
的压缩包。解压缩。然后将解压缩后的文件放入根目录。
如图:
设置运行目录为public
:
根据官方使用手册配置伪静态
|
|
记得安装PHP的fileinfo拓展,宝塔再软件商店点击PHP的设置即可找到,非常方便,curl宝塔已经自动安装了。
一切准备就绪。
下一步,填写数据库信息。
设置管理员信息。
安装成功。
# 完成
此时就可以进入网站,开始使用了!当然也可以瞻仰一下大佬的博客。顺带插一句,Lsky Cloud加油!(不过好像凉了)
# 对象存储配置
# 创建专用的Bucket
注意!我的域名已经备案,可以使用大陆节点服务。
在对象存储的存储桶列表中点击创建存储桶
,我选择了广州,是因为我的轻量服务器也在广州,同地域是走内网的,内网无需支付流量费用,这就能为我省下一笔费用。选择私有读写,免得流量被盗刷,COS的流量可不便宜。
域名没有备案的同学,也可以选择大陆外的节点,就是费用稍高些;即使选择了大陆节点,也可以通过配置CDN加速节点等方式来正常使用。
# 配置访问CDN
我们为了防止盗刷流量,为存储桶设置了私有读写,但这也使我们无法直接访问图片。这就需要CDN来解决这个问题。
你可以在存储桶详情中点击左侧的域名与传输管理
,选择使用默认 CDN 加速域名
或者自定义 CDN 加速域名
。
无论选择哪像,都记得打开回源鉴权
,否则CDN无法回源存储桶内文件。
默认 CDN 加速域名是腾讯云的域名,可以直接使用,但含有你的APPID,需要注意。可以选择中国境内
,全球
,境外貌似需要迂回一下,我没有试过,不确定。
自定义 CDN 加速域名则可以直接选择中国境内
,中国境外
,全球
的加速地域,根据自己情况选择。
在此我选择自定义 CDN 加速域名
,填好域名,选择了境内加速。
# 配置CDN CNAME
!选择默认CDN加速域名的可以跳过此步
前往DNSPod控制台添加刚刚填写的域名,CNAME指向存储桶页面提供的CNAME域名。 之后可以去腾讯云的CDN域名管理查看刚刚添加的CDN加速域名。
不过一会状态就变成已启动
了。
# 配置CDN相关设置
我开启了IPv6访问
,这没啥好说的。
我还配置了防盗链。referer白名单,包含自己的所有域名、一些朋友的域名及空referer(空referer可以使图片直接在浏览器中预览)。你可以按自己情况配置。支持*。
# 前端、对象存储对接
配置完CDN后就到了最后一步,将兰空连接到存储桶。
此时有两种方法。
法一更简便,但安全要打点折扣。 法一便是官方使用手册的方法
由于直接使用了主账号密钥,一旦泄露而又不知情的话会造成严重损失。
便衍生出法二,便是创建子用户,一个仅具有该存储桶读写权限的子用户。使用该子用户的密钥可以降低泄露造成的损失。
# 子用户
进入腾讯云用户列表,单击新建用户
。
再点击快速创建,设置用户名,更改访问方式,并将用户权限删除(也可在此处直接配置存储桶读写权限)直接配置。我的配置如下图。
进入存储桶详情页,在左侧列表中找到权限管理
,点击,在下拉列表中点击存储桶访问权限
,在用户权限
栏点击添加用户
,在用户类型处选择子账号
,账号ID点击即可选择,非常方便。权限选择数据读取
和数据写入
即可,单击右侧的保存
以保存该条用户权限。
回到用户列表,进入用户详情页,查看API密钥。待会要用。
之后即可参考官方手册,完成配置。当然我也会记述这部分的。
# 正式对接
登陆管理员账号后点击兰空图床左侧存储策略
,在上方选择腾讯云COS
,依照提示填空。注意此处SecretKey
和SecretId
是一上一下的顺序,并非Id在上Key在下,填写时需注意。域名填写CDN加速域名。当然你没有配置CDN加速也可直接填写存储桶访问域名。
我的配置如下。
点击保存即可。
这样就完成了对接。
# 全部完成
上传图片测试一下,正常。
教程结束。