图床搭建全教程

写了好几天,高估了自己的行动力

先来张图片看下效果

tu
tu

可以看到加载还是很快的啊~(图片已压缩,大小400多KB)


前言

老规矩,说下为啥要自建图床。

现如今,公共图床有不少,免费的也很多。知名的有SM.MS图床,路过图床ImgURL等等 但我都觉得或多或少有些慢,并且万一哪天不再提供服务了,大量图片迁移必定费时费力。 而自己搭建的图床自己心中有数,虽然成本高上不少,但却足够稳定,心中有数。

讲真,我这点小博客哪有人来看呐,花费应该是很少的。

多图警告!

方案

我的图床选用的是自建前端的方案,并且存储策略选为腾讯云COS。

大致原理如图:

imgbed
imgbed

开始

首先咱得有个腾讯云账号,这里就不展开了。我用的腾讯云全家桶,其他平台步骤也大差不差。

前端搭建

寻找

肯定用现成的程序,不然等写好图床我估计大学都毕业了(笑)。

那就找罢。

首先找到了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,下个版本应该会修复。

装好后过来网站页面,“添加站点”,非常方便。 配置如图:

baota_site
baota_site

进入网站目录,上传Lsky Pro的压缩包。解压缩。然后将解压缩后的文件放入根目录。 如图:

wwwroot
wwwroot

设置运行目录为public

root
root

根据官方使用手册配置伪静态

location / {
    if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php?s=$1 last; break;
    }
}

rewrite
rewrite

记得安装PHP的fileinfo拓展,宝塔再软件商店点击PHP的设置即可找到,非常方便,curl宝塔已经自动安装了。

PHP_fileinfo
PHP_fileinfo

一切准备就绪。

Preinstall_Lsky
Preinstall_Lsky

下一步,填写数据库信息。

database
database

设置管理员信息。

admin
admin

安装成功。

sucess
sucess

完成

此时就可以进入网站,开始使用了!当然也可以瞻仰一下大佬的博客。顺带插一句,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后就到了最后一步,将兰空连接到存储桶。

此时有两种方法。

法一更简便,但安全要打点折扣。 法一便是官方使用手册的方法

由于直接使用了主账号密钥,一旦泄露而又不知情的话会造成严重损失。

便衍生出法二,便是创建子用户,一个仅具有该存储桶读写权限的子用户。使用该子用户的密钥可以降低泄露造成的损失。

子用户

进入腾讯云用户列表,单击新建用户。 再点击快速创建,设置用户名,更改访问方式,并将用户权限删除(也可在此处直接配置存储桶读写权限)直接配置。我的配置如下图。

user
user

进入存储桶详情页,在左侧列表中找到权限管理,点击,在下拉列表中点击存储桶访问权限,在用户权限栏点击添加用户,在用户类型处选择子账号,账号ID点击即可选择,非常方便。权限选择数据读取数据写入即可,单击右侧的保存以保存该条用户权限。

回到用户列表,进入用户详情页,查看API密钥。待会要用。

之后即可参考官方手册,完成配置。当然我也会记述这部分的。

正式对接

登陆管理员账号后点击兰空图床左侧存储策略,在上方选择腾讯云COS,依照提示填空。注意此处SecretKeySecretId是一上一下的顺序,并非Id在上Key在下,填写时需注意。域名填写CDN加速域名。当然你没有配置CDN加速也可直接填写存储桶访问域名。

我的配置如下。

my
my

点击保存即可。

这样就完成了对接。

全部完成

上传图片测试一下,正常。

教程结束。