LanternD +

图床变更——和七牛说再见

 

 这个是月初的事情,不过最近真是忙得不行,到月底了补一刀,把坑填上。

七牛测试域名回收

 我之前的博客图床是七牛云储存。事情的起因是七牛七月份的时候突然给我发了个邮件,说要开始回收测试域名。当时我都没当回事,直接批量弄成了已读邮件。到了九月底的时候七牛跟我说测试域名马上就要回收了。这时我就开始慌了,开始研究怎么跳出这个坑。

img

 中间我还发了个工单问能不能往后延一周,结果说不行。

 七牛提供的唯一解决方案是绑定 已备案 的个人域名。域名好弄,所以重点是要备案。现在回想,最大的失误就是那时候低估了备案的难度和恶心程度,导致我浪费了很多的时间。

尝试1:万网

 万网是阿里巴巴旗下的管域名管空间主机的。网上有若干案例说万网买域名顺便能搞定备案,于是我跃跃欲试。

 话了几十块钱买了个3年的域名,正准备去备案,结果跟我说……需要指向万网的主机才能备案,然后这破主机一年竟然要400多块钱。

 我又搜了不少帖子,发现当年买域名帮备案是初期推广时候的事情了。现在韭菜都割完了,我怎么会主动去投坑。

 又搜了一下,我发现这备案的坑堪比天坑。我原来以为只需要传传身份证,填个表格就完事了。结果居然还要幕布拍照(网管站在写有站名的幕布前拍照)。PS肯定是不OK的。我看到了阮一峰的《关于网站备案》才对其有个透彻的认识:

 现行的网站备案制度,其实是一种「双绑定」 制度,一方面将网站和它的所有人绑定在一起,另一方面将网站和它的接入商绑定在一起。一旦出事的话,政府不仅要找到网站的所有人,还要找到网站的接入商。为什么要找接入商呢?说穿了,就是为了第一时间把网线拔掉。

 呵呵。

 只能说被GitHub Page惯坏了,对备案系统没有基本了解。

 所以,国内的服务提供商基本就都排除了。话说,七牛要回收测试域名的原因也是「应有关部门的要求」。管得真是太严了。

尝试2:GitHub

 时间来到了10月4号,下一天七牛就要停了。我还没找到下家。于是开始打起了GitHub的主意。我觉得这个不是很好,毕竟GitHub主要是放代码的,用来做图床既占带宽又占硬盘,不是很道德。我决定只用来做暂时的缓存,找到下家就删掉。

 决定换的时候,新的Boss出现了:我的文章里面都是七牛的链接,如果要换图床的话,需要把所有的链接全部都更新一遍……

 这时候只能靠Python了,自己写了个替换文章图片链接的代码(其实就是搜索+替换)。输出的文章先放到另一个文件夹,以免和原来的混淆。

import os


def get_file_list(file_path):

    files = []
    for root, dirs, files in os.walk(file_path):
        print('# of files: {0}'.format(len(files)))
    file_list = files
    return file_list


def replace_link_in_blog_posts(input_dir, output_dir, org_text, new_text):

    filename_list = get_file_list(input_dir)

    for my_f in filename_list:
        with open(input_dir + my_f, 'r', encoding='utf-8') as f_read:
            replace_counter = 0
            with open(output_dir + my_f, 'w', encoding='utf-8') as f_write:

                for line in f_read:
                    if org_text in line:
                        replace_counter += 1
                        f_write.write(line.replace(org_text, new_text))
                    else:
                        f_write.write(line)
                print('Replaced {0} links in file \'{1}\'.'.format(replace_counter, my_f))
                f_write.flush()
                f_write.close()

            f_read.close()


replace_link_in_blog_posts('~/Github/lanternd.github.io/blog/_posts', './output/',
                           'http://lanternd.qiniudn.com', '{{site.img-hosting}}')

 事情就这样成了。另外,我把链接前缀换成了Liquid语言的变量,这样以后再换图床,只要相对目录结构不变就没问题了。

 于是把链接换成了GitHub的。

 Update:现在GitHub放图片的目录被我删掉了。

img

尝试3:AWS

 最后我把目标瞄准了Amazon Cloud Service。节点又多,流量也便宜。

 具体的方案是:

 具体细节可以参考博文《正确使用AWS S3的方式之打造自己的https图床》。一个要点就是,最后CNAME的域名要和S3的Bucket名保持一致。另外,S3有两套访问机制(Endpoint),一种是Web,一种是Restful还是啥。我目前的结论是,Web比较直接一些,符合习惯,并且找不到的时候404页面可以自定义,缺点是经常有爬虫爬,导致额外流量消耗。可以写个 robot.txt 防止爬。

 目前运行了三周左右,情况稳定良好。我现在Blog所有图片加起来大概400+M,每天输出流量大概100M,每个月花费不到0.3美元。按量收费还挺靠谱。

 以后有空(一个Flag)可以加入图片压缩功能,进一步减小流量(但是会增加服务器开销的钱)。

 其实七牛要收钱的话我还是愿意出一点的,每个月5块10块的。但是动不动就取消原来的服务,这种行为太令消费者伤心了。不过话说回来,还是得和七牛说一声「谢谢」。过去三年时间他们提供的服务还是令人满意的。

综合看

LanternD
LanternD_Logo






订阅

RSS订阅 微信公众号

文以类聚

更多『blog』分类的文章