首页 > 其他分享 >博客搭建-图床篇

博客搭建-图床篇

时间:2024-07-07 16:57:36浏览次数:14  
标签:存储 七牛云 博客 图床 搭建 上传 图片

我们的博客难免少不了图片,图片管理是一个不小的难题。如果我们将图片全部放到我们自己的服务器上,那么带宽就基本上会被图片所占满了,这会导致网站加载很慢(特别是图片加载很慢)。

什么是图床

为了解决图片的问题,市面出现了很多公司,提供图床服务:就是将图片上传到他们的服务器,然后返回一个图片链接给你,这样我们就可以在博客中引用这个图片,我们自己的服务器只需返回前端 HTML 和 JS 等小文件,加载速度很快。并且,图床服务的背后使用了一些 CDN 等技术,可以使得图片的访问速度很快

我们在选择图床的时候,请慎重选择免费图床,毕竟众多免费图床网站注册条款里有禁止商用这一条,哪天关闭了图片外链或者商用,势必给用户带来很大的麻烦,比如我们博客的所有图片突然都看不到了!很多免费图床总是好景不长,因为做图床是要投入的,比如服务器、带宽、人员、技术投资、市场宣传等,完全免费了,这些小站可能自己都难存活,所以总是不能长久使用!

也有人使用 Gitee 作为图床,但 Gitee 突然加上了防盗链功能,导致很多人的博客的图片都失效了:突发,Gitee 图床废了_程序员鱼皮的博客-CSDN 博客

图床的基本术语和常见图床

对于数字和文本类型的数据,比方说名字和电话号码相关的信息,我们通常会用数据库去存储(例如 MySQL、Oracle 等)。

但对于图片这样的文件对象存储层不太可能再用数据库,应该改用专业的对象存储,比如亚马逊的 S3(Amazon Simple Storage Service,简单存储服务,因为是三个 S 开头的单词,所以叫 S3),或者阿里云的 OSS(Object Storage Service)。

在对象存储中,有几个概念需要了解(看不懂就算了...):

  • 桶:可以理解为一个现实生活中的桶,里面存放的就是文件了。可以有多个桶,例如这个桶用来存放图片当作图床用,另一个桶用来存放视频当网盘用等等……

  • 对象:就是一个个文件对象了,这个对象包括三个部分:Key、Data、Metadata。Key: 可以理解文件名,是该对象的全局唯一标识符(UID)。Data 也就是用户数据本体。这个不用解释了。

    Metadata 叫做 元数据 ,它是对象存储一个非常独特的概念。元数据有点类似数据的标签,标签的条目类型和数量是没有限制的,可以是对象的各种描述信息。

    举个例子,如果对象是一张人物照片,那么元数据可以是姓名、性别、国籍、年龄、拍摄地点、拍摄时间等。

    在传统的文件存储里,这类信息属于文件本身,和文件一起封装存储。而对象存储中,元数据是独立出来的,并不在数据内部封装。

    元数据的好处非常明显,可以大大加快对象的排序,还有分类和查找。

目前提供图床服务的有很多:

对象存储这个技术,不同的云厂商有不同的英文缩写命名。例如阿里云把自家的对象存储服务叫做 OSS,华为云叫 OBS,腾讯云叫 COS,七牛叫 Kodo,百度叫 BOS,网易叫 NOS……五花八门,反正都是一个技术。

在机缘巧合之下,我用过一段时间的七牛云,因此后续也是使用的七牛云了,这里也是以七牛云为例(其他图床的使用方法是类似的)。

七牛云入门

先去官网注册一个账号,然后去, 对象存储 里,添加对象存储功能,新建空间的意思就是新建一个存储空间:

例如这里我新建了一个空间 vuepresslearn 用来当测试:

注意,新建的空间只有一个临时域名,如果要长久使用得有一个正式的域名,例如我图床的域名是 image.peterjxl.com:

然后我们点击文件:

就可以上传文件了:

然后点击选择文件,就会弹出选择文件的对话框。是否要上传覆盖按需选择

​​

例如我上传了一张图片,上传文件后,就可以获得其访问链接:

然后访问该链接,就可以看到图片了

博主本人新建了一个 blog 目录,专门用来存放博客的图片;还创建了其他目录,用来存放其他项目的图片。是否要在空间里创建目录看自己的需求。

绑定域名

七牛云默认提供的测试域名是会过期的,要想长久使用,得绑定一个域名:

这里我随意输入了一个域名:

然后就能获取到一个 CNAME:

然后去到我的域名解析商控制台里(我用的是阿里云),配置这个 cname,参考 如何配置域名的 CNAME - 七牛开发者中心

这样用户访问的我图片 image.peterjxl.com/1.jpg,就会通过 CNAME 重定向到七牛云的链接上去,然后获取图片。

配置完后,DNS 生效后就可以在域名管理里看到状态是成功的:

需要注意的是,如果你的存储空间是私有的,那么图片的外链会有很多的参数;例如:

如果去掉 jpg 后面的参数,是访问不了的,这是七牛云的规则。设置成公有的,图片才不会有这么多参数:

设置完后:

使用 HTTPS

由于我的博客使用了 HTTPS,如果图床没有使用的话,会不安全,因此也得加上 HTTPS。

为此,我们需要先购买一个域名证书。由于我之前已经购买过证书了,因此后续有些步骤我仅仅是演示用,没有实际购买等,具体可以参考:博客图床最佳解决方案_隔壁郑同学的博客-CSDN 博客,这里简单提提怎么买。

打开证书管理:七牛云 - 证书管理,点击购买证书

一般来说选个最便宜即可,我们不是企业型,用不上那么贵的:

然后就可以配置 HTTPS 了:由于我之前已经购买了证书,这里就不继续往下演示了

图片上传工具

我的博客是基于 Markdown 的,如果我们每次上传图片都需要登录到七牛云控制台并上传,就太慢了。因此市面上出现了很多图片上传工具,能实现的效果是这样的:将图片拖拽到工具里,就能自动上传到对象存储里,并且获取图片链接,极大简化了我们的操作。

目前常见的工具有:

  • PicGo:支持 Windows,Mac 和 Linux,基于 Electron 开发,支持多种图床上传
  • iPic:只支持 Mac

博主使用的是 PicGo,我们先下载,然后打开配置:

Bucket 就是存储桶的意思,一般就是你新建的空间的名字

访问地址就是绑定的域名

设定存储路径:比如在存储桶里,我还分了几个目录,专门用一个 blog 目录用来存放博客的图床,如果你没有设置,可以不写存储路径

至于怎么配置,可以参考文档:配置手册 | PicGo。至于怎么获取 AK 和 SK(AccessKey 和 SecretKey),要去七牛云 - 密钥管理 里获取,或者在右上角--密钥管理:

获取 AK 和 SK:

配置完 PicGo 后,就可以实现将图片拖拽上传到图床的效果了,方便了不少:

Typora + PicGo

由于经常需要上传图片到图床,为了方便我们写文档,Typora(一款 Markdown 编辑器)也在 2022 年集成了 PicGo,可以实现在 Typora 里,对着图片右键,就可以上传图片

还可以批量上传:

配置方法:打开 Typora 的设置,进入图像选项卡部分:然后设置上传服务即可

更多可以参考 Typora 官方文档:Upload Images - Typora Support

上传图片并修改 Markdown 文件

对于我来说,我通常是在一个思源笔记(一个支持 Markdown 语法的笔记软件)里写好文章,然后导出为 Markdown,再上传到博客的,如果博客的图片比较多,那么打开一个个然后逐个上传图片也是很麻烦的……为此博主曾打算自己写一个软件,可以一键将 Markdown 文件里的所有图片都上传到图床,并且自动修改 Markdown 文件里的图片链接,这样 Markdown 文件就可以直接发布到博客上了,非常方便。

但是在动手造轮子之前,先在 GitHub 上搜索了有没人造好了轮子,还真发现了不少… 还好没有自己动手。以下是我搜到的:

如果你觉得上述的项目都不符合自己的需求,想自己写,也不难,七牛云官方文档里提供了各种编程语言上传文件的接口:直传文件_API 文档

网上也有不少人自己写的:node+express 简单的实现文件上传 到 七牛云存储中 - 掘金

防盗链和白名单

互联网并非一片净土,只有是网站就有被攻击的风险,而被攻击最直接的损失就是金钱和时间上的损失,例如图床是有流量限制的,如果一直有人盗刷,就会造成流量耗尽,图床用不了,可以参考小林 coding 的博客:我的网站第一次被攻击了

为此,我开启了防盗链功能,博客里的图片只能在博客里看到,如果你复制到其他网站上,是看不到的。当然这也有缺点,就是不方便了,比如博主在本地运行博客,也是看不到图片的;并且也不方便其他人转载;

但如果实在想要在其他网站显示你的图床上的图片,可以加白名单,这样就可以显示了(注意白名单还得加上七牛云,不然在七牛云里也看不到图片,为此我还特地提了个工单咨询过

标签:存储,七牛云,博客,图床,搭建,上传,图片
From: https://www.cnblogs.com/PeterJXL/p/18288686

相关文章

  • Linux搭建DNS服务器实验
    一、实验目的及要求  实验目的◼理解DNS协议◼掌握Linux环境下DNS服务器的配置方法实验要求◼设置域名***.com(***为名字缩写)◼搭建dns服务器,实现域内三台服务器的正向和反向解析web.***.com192.168.x.11ftp.***.com192.168.x.12bbs.***.com192.168.x.13去......
  • day02-项目搭建+consul
    1RestTemplateRestTemplate提供了多种便捷访问远程Http服务的方法,是一种简单便捷的访问restful服务模板类,是Spring提供的用于访问Rest服务的客户端模板工具集官网地址:https://docs.spring.io/spring-framework/docs/6.0.11/javadoc-api/org/springframework/web/client/RestTe......
  • 准大一萌新学习C/C++的第一天:搭建C/C++环境
    1.1.下载minGW1.官网下载地址(下载非常慢不推荐):http://gcc.gnu.org/install/官网镜像站:NJUMirror 2.sourceforge下载网址(有时候进不去。推荐离线下载,一键直达下载):MinGW-w64-for32and64bitWindows-BrowseFilesatSourceForge.netsourceforge镜像站:Downloadgeo......
  • 免费部署发卡独立站,搭建属于个人的数字商品销售网站
    本文介绍如何使用开源项目,零成本,无需服务器的方式搭建一套自己的数字商品/发卡独立站,无需开发能力,即便是小白用户也能搭建。感兴趣可直接查看开源项目地址......
  • [概述]博客随笔/文章/日记食用指北
    标签功能:[概述]:如何和本人&该博客打交道的方法在这里会一点点写给大家。[规划]:短期的,长期的,恒久的,临时的,想到啥写啥,不觉得自己是个能坚持很久的人,所以和各位共勉。[积累]:以文科学习为主,基本是电子稿,偶尔会暴字。[打卡]:主要是对于2的落实,包括完成进度和相关的感悟。[好题]:(......
  • 安装Nexus3和使用Nexus3搭建私有docker镜像仓库
    1、官网下载Nexus3:https://help.sonatype.com/en/download.html2、上传到服务器后解压:tar-xfnexus-3.69.0-02-java8-unix.tar.gz3、修改运行nexus配置【1】修运行nexus所使用的用户:vim/opt/nexus3/nexus-3.69.0-02/binexus.rc#修改默认登陆用户为admin#run_as_user=......
  • opencv环境搭建-python
    最近遇到了一些图像处理的需求,所以需要学习一下opencv,来记录一下我的学习历程。安装numpypipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simplenumpy安装matplotlibpipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simplematplotlib安装opencvpipin......
  • 小学期第一次博客
    一、配置虚拟机环境首先,安装和配置虚拟机是整个项目的基础。选择适当的虚拟机管理软件(如VirtualBox或VMware)并安装Linux操作系统(如Ubuntu或CentOS)。配置好虚拟机后,需要确保虚拟机的网络设置为桥接模式,以便能够与外部网络通信。二、安装和配置Hadoop下载和安装Hadoop:从Hadoop的......
  • 带支付等功能的二级域名分发系统美化版源码+内附搭建教程
    介绍:今天给大家搭建一个二级域名分发系统二开版(代码改了下,勿喷)这个程序是快乐域名的,拿去用就可以了!星光云主机:www.aa1.asia环境:php7.1以上现在我们来打开面板1.创建网站,上传源码至网站根目录,解压、解压完成后直接打开域名进行安装2.安装地址:域名/install/安装步骤下一......
  • Web环境搭建phpstudy+pikachu靶场
    准备1、小皮面板(phpStudyv8.1版本)下载链接:https://www.xp.cn/download.html2、pikachu下载链接:https://github.com/zhuifengshaonianhanlu/pikachu配置步骤配置phpstudy1、解压phpstudy2、安装3、启动环境4、找到phpstudy当中,WWW目录5、解压pikachu,在WWW目录当中......