杨记

碎片化学习令人焦虑,系统化学习使人进步

0%

搭建博客图床

博客图床搭建问题

起因

使用hexo+github搭建了一个静态博客,杨的个人博客 (yanglinqi107.github.io) ,用于记笔记和分享。

在本地使用的工具是Typora,markdown对图片是弱引用,一般在本地都要使用文件夹来保存图片。分享引用了图片的markdown文件也要附带上文件夹,比较麻烦。

hexo支持上传的md文件附带一个同名的保存图片的文件夹。保证了上传的博文也能够显示文件,但这样也有问题:

  • 当写的博文逐渐增加,图片增加,每回上传更新博客的时候,图片上传要花的时间比较长,访问github的速度本来就慢,上传这么大的数据很容易失败
  • 执行hexo g命令耗时较长
  • 如果本地博客目录下有20个md文件,可能还要20个文件夹,这样管理起来也很麻烦。如下图

image-20220517201208638

Github图床

参考链接

PicGo+jsDelivr+GitHub搭建免费 CDN 加速图床 (baidu.com)

Typora+Github + Picgo打造个人云笔记_iheal的博客-CSDN博客

遇到的问题

1、图片上传失败:

因为访问github网站比较网,我电脑下载了Github加速器FastGithub,打开该软件的时候,图片上传失败

2、图片无法访问:

图片上传成功后,PicGo相册页面不显示,图片也不能访问

  • 仓库需设为公开,如果设的私有就在setting中修改,重新上传图片
  • 如果不是仓库问题,就把PicGo卸载重装,重新上传图片

3、若:文件-》偏好设置-》图像-》插入图片时 选择上传图片

  • 剪切板的图片直接贴入Typora会自动上传云端,但还会在本地C:\Users\xxx\AppData\Roaming\Typora\typora-user-images保存图片
  • 而对先保存本地,再贴入Typora的图片不会再在C盘保存

4、若:文件-》偏好设置-》图像-》插入图片时 勾上了对网络位置的图片应用上述规则

  • 对图床内的图片的引用会导致图片重复上传

5、想要对之前本地的图片全部上传,在菜单栏

  • 格式-》图像-》上传所有本地图像

红字

推荐:使用本地git工具初始化一个本地仓库,将所有图片推送到github仓库上(推送之前要确保没有重名文件),方便快捷,再对应修改所有md文件中引用图片的前缀。VS code就可以批量文件直接搜索替换就行,很方便。

小结

因为我原先的图片都在本地,且以及写了很多md文件,本地以及累积了几千张图片,然后要批量上传至github。使用Typora的上传所有本地图片,遇到了好多情况:

  1. 上传成功。当前md文件的图片引用也自动换成了图片url
  2. 上传失败。上传的文件有重名或和已经上传至仓库的文件重名。办法:在PicGo中打开时间戳重命名
  3. 先报上传失败,再报上传成功,本地md文件没变,但图片确实上传了。这个很烦人,我没找到解决办法
  4. 上传成功,本地也能显示。但过一会全部加载图片失败

对于上面的问题,我卸载重装了好几个版本的PicGo,也试过PicGo-Core(command line),甚至一张张上传图片,但还是会有问题。最后即使上传成功,访问图片还是容易失败。通过https://cdn.jsdelivr.net/gh/来访问博客图片显示不出来。最后放弃Github了,开始尝试Gitee。

最终方法

如果你是和我一样,本地有较多图片(我1000+),推荐前面红字的方法,再把本地hexo目录下_post文件夹下的md文件改变图片引用链接,

https://cdn.jsdelivr.net/gh/yanglinqi107/images/img/headpic.png

image-20220519172310501

图片访问是一个大问题,即便有cdn加速服务,大概率还是访问不了

  • 需要使用加速器,推荐网易UU加速器,下载后搜索学术资源,开启加速,就能通过对应的URL访问图片了,博客中的图片也能显示出来。存在问题:
    • 博客加载较慢
    • 只有开了加速器的用户才可能访问的了博客

本地md最好还是引用本地图片,不然平时看笔记都会很难受。

Gitee图床

在使用加速器之前,尝试过使用Gitee作为图床,毕竟Gitee是在国内,访问是很快的

参考链接

1、PicGo + gitee 免费搭建个人图床工具_小云很优秀的博客-CSDN博客_picgo插件

2、https://www.cnblogs.com/ElloeStudy/p/15405912.html (可能加载很慢)

3、https://www.jianshu.com/p/5b58ecce6443

4、https://cloud.tencent.com/developer/article/1952245

问题

和使用Github类似,创建一个公开的仓库,使用git工具把图片推送到gitee仓库上,假设仓库名称是yanglinqi107/Images,分支为master,同样有个AI-img文件夹和文件夹下面有headpic.jpg图片

图片访问链接格式为:https://gitee.com/yanglinqi107/Images/raw/master/AI-img/headpic.jpg

但是,有问题了:

1、应该是在2022年3月份的样子,gitee加了防盗链,也就是会验证请求头里面的referer

  • 具体信息和解决方法可以看参考链接3和4

2、应该是在2022年5月18号左右,gitee又对仓库公开加了一层审查。即

  • 创建仓库只能选择私有
  • 创建之后才能修改为公有,但是要审核,而且目前要很难审核通过

因为在5月17号的样子,我已经把所有图片上传至gitee仓库中,并且博客图片也能正常显示,但是18号那天再次查看博客,发现所有的图片均不显示,仓库也变成了私有,只能仓库成员访问

申请了几次,仓库也删了重建几次,都没通过公开审核

小结

不推荐使用Gitee,总会有些幺蛾子。就算目前没事,可能后面整改一下,你的图床就要转移了。会很麻烦,而且gitee官方好像对使用仓库做图床的行为是不喜的。

结束语

如果资金允许的话,可以在腾讯云或阿里云上买个对象存储服务器,一年大概百来块吧。

如果想免费的,就可以使用github+加速器,速度还是很快的。

服务器图床

gitee回顾

2022.7月

我在gitee上的仓库公开申请通过,于是把重新打起了gitee图床的主意。

把图片上传至gitee上,设置Next主题的请求头不带Referer,基本上图片都能通过URL进行访问。但就是有几张图片通过URL访问不了。

image-20220801140745929

可用自己买的服务器作为图床,我买的服务器的操作系统是CentOS8

安装httpd服务

centos7上搭建http服务器以及设置目录访问 - Certainly - 博客园 (cnblogs.com)

https://www.cnblogs.com/webttt/p/10290429.html

centos如何对外开放80,3306端口号或者其他端口号_陌上桑花开花的博客-CSDN博客_centos开放端口

简单点就是两步命令

1
2
3
4
5
sudo yum -y install httpd	# 安装httpd
systemctl start httpd.service # 启动httpd服务

# 如果修改过httpd的相关配置文件,要重启httpd服务才能生效
systemctl restart httpd.service

文档根目录: /var/www/html

把图片文件上传至/var/www/html下,如我所有图片都在gitee上,可以直接git clone

访问文件的URL格式:http://ip/html后的路径/文件名

如访问下图中的background.jpg文件:http://服务器ip/Images/img/background.jpg

image-20220801144347335

欢迎关注我的其它发布渠道