七牛云回收测试域名的应对办法

本贴最后更新于 1962 天前,其中的信息可能已经时过境迁

2018 年 9 月,七牛云回收了所有测试域名,这直接导致各种博客系统的所有图片资源全部失效,包括了我自己的 solo 博客,这个项目记录了这个问题的解决办法

案例代码:github/hand-solo-pic-url

解决步骤

  • 登录七牛云后台,配置自己的域名

    • 详细步骤:七牛云后台 -> 域名管理 -> 添加域名 -> 添加自己的域名记录(比如我的 oss.liumapp.com)

    • 注意事项:七牛云会要求您的域名必须完成备案,否则无法添加,并且添加成功后,七牛云会提供一串 CNAME 地址,您需要把这串 CNAME 地址跟自己的域名解析起来。

  • 在七牛云后台配置对象存储

    • 详细步骤:七牛云后台 -> 对象存储 -> 选择自己的存储空间 -> 内容管理 -> 设置外链默认域名为刚刚配置成功的域名(oss.liumapp.com)

    • 注意事项:添加域名后,需要等待七牛云的审核,审核通过后才可以进行这一步的操作,操作完成后,可以在内容管理列表中,直接选择一张图片来看看外链地址:(一般长这样:http://oss.liumapp.com/004a8d56bba1416a8e004447a65bcf08.jpg)

  • 接下来修改 solo 数据库,把所有博文的图片资源地址中的测试域名,替换为自己刚刚设置好的域名(oss.liumapp.com)即可

    • 替换 sql:

          SET SQL_SAFE_UPDATES = 0;
           UPDATE b3_solo_article SET articleContent = REPLACE( articleContent,'http://你之前七牛测试域名地址','http://oss.liumapp.com') ;
      

    我之前的七牛测试域名是:http://om40sen9v.bkt.clouddn.com,那么 sql 就是:

          UPDATE b3_solo_article SET articleContent = REPLACE( articleContent,'http://om40sen9v.bkt.clouddn.com','http://oss.liumapp.com') ;
    

    在 sql 命令行或者相关工具中对文章表(大 D 在新版本的 solo 中似乎改动了数据表,所以您在操作之前,请确认一遍表名与字段名是否匹配)进行修改。

      各位看官读到这里,基本上就解决了自己博客图片资源路径失效的问题,但是我这里还想做一些特殊操作,接下来记录的内容,介绍了如何将七牛云的图片资源转移到GitHub上(换句话说,就是利用GitHub作为自己站点的OSS存储服务,我之所以想要这么折腾一番,是希望在后续将博客的前后端进行分离实现,前端整体部署到GitHub,后端则利用自己的ECS资源仅仅提供API服务)。            
    
  • 使用 GitHub 存储所有博客图片:

    • 首先可以使用官方推荐的 python 脚本(script/download-process.py)将七牛云 oss.liumapp.com 空间上的所有资源下载下来

    • 对 python 不熟悉的同学,手撸 Java 代码,再通过七牛云的 api 也是可以达到批量下载的目的(src/main/test/.../APITest.java)

      • APITest.java 的 getItemList 方法为获取你七牛云空间的所有文件信息

      • APITest.java 的 downloadAllFile 方法为下载你七牛云空间的所有文件

      • 注意事项:在运行之前,你需要首先配置 src/main/java/.../resources/application.yml 文件,填写自己的七牛云 appkey 以及 secretKey 等信息

      • 另外在下载过程中,要考虑目录层级、目录权限的事情(案例代码里面已经全部解决这些问题了,如果看官自己写的话请留意一下)

        附上一张下载完成后的截图

        1.png

    • 完成所有图片的下载后拷贝上传 GitHub...再同样的方法修改图片 url 即可,记得再最后面引用图片的时候带上 ?raw=true 参数

  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    1425 引用 • 10043 回帖 • 471 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3167 引用 • 8207 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • yinhuiming

    正在找这个的解决方法,太感谢了 🙏

  • yinhuiming

    图片.png这是不能下载了吗?什么原因导致的呢

    1 回复
  • liumapp
    作者

    no protocol 是无协议的意思,可以让我看看完整的图片 url 吗?

    1 回复
  • yinhuiming

    图片.png

  • liumapp
    作者

    这里的配置呢?
    image.png

    1 回复
  • liumapp
    作者

    涉及到敏感内容,您别截图了,测试单元的 getItemList ()返回结果成功了吗?

    2 回复
  • yinhuiming

    图片.png

  • yinhuiming

    成功了成功了

  • yinhuiming

    图片.png

    2 回复
  • liumapp
    作者

    我看到很多 null,奇怪,如果根据这个 list 遍历的话,确实会产生我没有捕获到的异常,建议您在代码(第 84 行的 catch 后面)里面加一个 catch exception 简单处理一下

    1 回复
  • liumapp
    作者

    我自己实际测试的时候,所有的 item 都是有效的,并没有考虑到无效 item 的情况

  • yinhuiming

    处理一下是可以,但是文件没下下来咋办

  • liumapp
    作者

    image.png
    处理后还是不能下载的话,这里打个断点,看看具体数据

    1 回复
  • yinhuiming

    图片.png

  • liumapp
    作者

    image.png
    这个域名有问题,估计您需要去七牛云检查下了,如果直接 http 访问不了的话,用代码去下载肯定也是不行的

  • liumapp
    作者

    具体配置如下:
    image.png

请输入回帖内容 ...
liumapp
Github: https://github.com/liumapp 杭州

推荐标签 标签

  • IBM

    IBM(国际商业机器公司)或万国商业机器公司,简称 IBM(International Business Machines Corporation),总公司在纽约州阿蒙克市。1911 年托马斯·沃森创立于美国,是全球最大的信息技术和业务解决方案公司,拥有全球雇员 30 多万人,业务遍及 160 多个国家和地区。

    16 引用 • 53 回帖 • 118 关注
  • Mac

    Mac 是苹果公司自 1984 年起以“Macintosh”开始开发的个人消费型计算机,如:iMac、Mac mini、Macbook Air、Macbook Pro、Macbook、Mac Pro 等计算机。

    164 引用 • 594 回帖 • 1 关注
  • OnlyOffice
    4 引用 • 28 关注
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖 • 15 关注
  • Typecho

    Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。

    12 引用 • 60 回帖 • 470 关注
  • 阿里云

    阿里云是阿里巴巴集团旗下公司,是全球领先的云计算及人工智能科技公司。提供云服务器、云数据库、云安全等云计算服务,以及大数据、人工智能服务、精准定制基于场景的行业解决方案。

    89 引用 • 345 回帖 • 2 关注
  • ngrok

    ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。

    7 引用 • 63 回帖 • 598 关注
  • FlowUs

    FlowUs.息流 个人及团队的新一代生产力工具。

    让复杂的信息管理更轻松、自由、充满创意。

    1 引用 • 2 关注
  • frp

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP、UDP、 HTTP 和 HTTPS 协议。

    15 引用 • 7 回帖 • 9 关注
  • 安装

    你若安好,便是晴天。

    128 引用 • 1184 回帖 • 1 关注
  • GAE

    Google App Engine(GAE)是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台。2008 年 4 月 发布第一个测试版本。目前支持 Python、Java 和 Go 开发部署。全球已有数十万的开发者在其上开发了众多的应用。

    14 引用 • 42 回帖 • 683 关注
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    148 引用 • 257 回帖 • 1 关注
  • MongoDB

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

    90 引用 • 59 回帖 • 3 关注
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 350 关注
  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    17 引用 • 6 回帖 • 44 关注
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    675 引用 • 535 回帖
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖 • 2 关注
  • 倾城之链
    23 引用 • 66 回帖 • 96 关注
  • Hexo

    Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。

    21 引用 • 140 回帖 • 24 关注
  • WordPress

    WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。

    45 引用 • 113 回帖 • 317 关注
  • CodeMirror
    1 引用 • 2 回帖 • 114 关注
  • CloudFoundry

    Cloud Foundry 是 VMware 推出的业界第一个开源 PaaS 云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。

    5 引用 • 18 回帖 • 150 关注
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖 • 1 关注
  • etcd

    etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。

    5 引用 • 26 回帖 • 492 关注
  • 设计模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

    198 引用 • 120 回帖
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 177 关注