当新浪防盗链时,我在想些什么?

随笔 2019-05-02 4186 字 1230 浏览 点赞

正文

有一天我打开 CSDN,发现放在页面左边的赞赏图不能显示了。几次刷新浏览器,无果。但我想,别看 5G 现在宣传得沸沸扬扬,网络不稳定仍是寻常事。也就没放心上。后来渐渐地,开始听到有人说新浪图床加了防盗链。于是赶忙打开自己的网站确认,可一切正常如初呀。旋即便想,大概哪儿有闲人“寻欢作乐”地随便说说,就像杨幂刘恺威隔几个月就要“被离婚”一次。三人成虎,消息在圈子里迅速流传,若不是看到图片在网页上安之若素,恐怕我也信以为真。

后来几天里,始作俑者下定决心似的,一定要把偶像剧在现实人生中演绎。先是列出一张清单,上面写着新浪图床哪些域名下做了防盗链,哪些域名还在苟延残喘。然后是一些列文章,推荐可替代的图床——七牛云当然稳稳在列。“所以罪魁祸首是七牛云吧!”这样想的时候,其实还可以加上副词修饰:斩钉截铁地。接着一键迁移脚本也被写好,散布网络。仗着自己网站毫无异样,我作壁上观,笑看两虎相斗。

诚如古人所说,好景不会太长。杨幂果真离婚了,博客的图片果真挂掉了。而我呢,成了温水里的青蛙。新浪笑而不语,釜底加薪。

当初贪一时便宜选择免费图床,结果昔日盟友反目成仇。当然也没那么严重啦,不过最初依赖新浪图床的人肯定心情不爽。好在程序员开源精神尚在,只要你愿意搜索,找解决方案,找一键迁移脚本,只是时间问题。兴许也得动动手,改上几行代码做适配。可知足吧,比自己一张一张地替换省时间。即便如此,还是有许多人对此总结:免费是最昂贵的。

“免费是最昂贵的”,这句话确无法反驳,可付费不见得会比免费便宜许多。因为,君不见爱奇艺漫威电影下架惹众怒。我虽无大钱,但原意花钱买“省事”,为此常常被父母责备。台词换了一套又一套,二老的总结陈词依旧会是“不知道你有几个钱”。我会选择新浪免费图床,其根本原因是“不要依赖”,恰逢有网友写了一键上传新浪图床的谷歌插件,存储地就这么定下了。所以即便不是新浪,也会是“旧浪”、“随便浪”、“浪里个浪”。

总之,如果你过分依赖了图床——其实应该往大了说,只要你过分依赖除自身以外的人与事,就会有大麻烦。基于这个观点,反而故意选择了不可生死与共的免费图床。行之有效的对策则是:尽量不用图片,只用有必要用的图片。倘若我选择的是付费图床,我会很难将此对策自始至终,因为我也贪小便宜,会觉得花了钱不好好利用就是吃亏。当然还是会有 B 计划和 C 计划,比如网站里的所有内容在印象笔记有备份,比如大部分在 CSDN 上有备份。尽管之前判断有误,马失了前蹄,我亦不慌张。

坚信“不要依赖”,因为曾经“依赖”给自己添过大麻烦,致使长久的郁郁寡欢。而我也逐渐意识到,当有人提醒你前面有坑请多加注意时,这个人多半掉进去过。

PS:到新浪免费图床完全防盗链时,个人网站一共 65 文,仅 20 图而已。接下来会用大量图,是压抑后的爆发。不过,下不为例!

教你如何搭建自己的图床

首先说明,在自己的网站上搭建图床,一个是考虑到大多数人只有一台服务器;其次是,使用者只是偶尔需要用图,付费图床不合算。所以搭建一个自己的微型图床显然是最佳选择。下面将用到 docker ,然后结合开源项目 Lychee。没用过不要怕,因为之前我也只用来 “Hello World” 过。

以下操作基于:CentOS Linux release 7.5.1804 (Core) 。

第一步,安装 docker :yum install docker

Alt text

第二步,启动 docker:systemctl start docker。也可以设置开机自启:systemctl enable docker

Alt text

第三步,把别人已经做好的镜像拉下来(尽量不造轮子)。在 docker 中拉镜像跟 Git 拉仓库差不多,命令是:docker imgae pull。这里需要拉的是 kdelfour/lychee-docker,所以完整命令: docker image pull kdelfour/lychee-docker

Alt text

镜像拉下来后,你可以用 ls 看一下是不是有这个镜像了(docker image ls)。

Alt text

第四步,启动这个镜像。需要说明的是端口映射的问题。由于我的服务器已经搭了个人网站,也用的浏览器默认的 80 端口,所以图床就不能用 80,我改用 5120,完整命令:docker run -it -d -p 5120:80 kdelfour/lychee-docker(访问 5120 端口,映射到 docker 容器里边的 80 端口)。

Alt text

命令 docker container ls 是查看正在运行的容器。可以看到第一次用这个命令的时候,没有容器在跑;启动之后就有了。

第五步,访问http://你的域名:5120。由于我是在本地的虚拟机里搭建,所以访问的是 http://ip:5120

Alt text

进入到初始化阶段。可以看到 Database Host 、Data Name 和 Table predix 是选填,那我们就不管它。而 Username 和 Password 默认都是 lychee 。输入后点击 connect,你会看到它要你新建一个用户名和密码,这是你之后登录图床要用到的。

Alt text

第六步,创建 ablum,上传图片。

Alt text

右上角 + --> Upload Photo,然后就可以愉快的上传图片了。lychee 还提供了其他导入图片方式,点击符号 + 可自行按需选择。更多用法请自己探索。

所以我们上传的图片到底去哪儿了呢。这时候我们需要先进入这个容器。命令 docker container ls 会显示容器的 CONTAINER ID,拿到这个 ID 后,键入 docker container exec -it 9a8e6f34294a /bin/bash,就进入容器了。

Alt text

现在可以 ls 一下,是不是感觉进入了一个 linux 终端,其实这就是 docker 想做的。然后关注 uploads 目录,可以看到图片就在 big 目录下。

Alt text

肯定会有人说卧槽,那我怎么把图片取出来呢?事实上,lychee 提供了网页的下载方式,想在服务器上操作也 OK 呀。把图片名复制下来(这个经过 hash 处理,基本是独一无二了),在你的服务器上用 find 命令搜索,不就找到它的绝对路径了嘛!

Alt text

你也可以指定保存路径,更多请见 GitHub :https://github.com/kdelfour/lychee-docker

最后附上卸载方式:

  • 先停止运行的容器:docker container stop [container-id]
  • 然后删除容器:docker container rm [container-id]
  • 最后删除镜像:docker image rmi [image-id]

获取对应的 id 可以通过命令:docker container lsdocker image ls

Alt text



本文由 Guan 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论