万壑松风知客来,摇扇抚琴待留声
用码云(Gitee)做图床
关于图床这个问题,(因为没有钱)其实考虑了很久,想过用免费的 SM.MS、ImgURL等,也注册使用了七牛云,但最终还是选择了通过 Gitee 来作为图床。与 Github 类似,Gitee也是一个版本托管平台。最开始想的是直接使用 Github 来做,由于访问加载速度的原因没有通过,而这方面 Gitee 就好多了,但使用 Gitee 作为图床可能会遇到下面这些技术问题。
Gitee 为什么可以作为图床呢:
上面简单提到了在无经济,高技术的情况下,可以选择使用 Gitee 来作为一个免费的图床。Gitee 作为中国开源,敢于挑战 Github,确实应该支持和学习一下,虽然两者相差甚远,但在国内访问速度这点来说 Gitee 优势很大(不走代理)。类似于 Github 我们可以创建私有、公有仓库,同样以 git 来管理托管代码等文件(包括图片),这些图片可以通过某种修改来生成外链,从而作为 MarkDown 中的外链引用,这也就是能通过 Gitee 作为图床的简单原理描述。
使用 Gitee:
我也是第一次使用 Gitee,虽然之前就有接触,但有了 Github 就没有多做考虑,上手起来其实很快,因为 Gitee 与 Github 的使用很类似,毕竟都是项目托管平台。不做每一步傻瓜式的图文描述,这里对关键步骤做一个说明。一个很重要的前提就是你得有 git,无论是 Linux 或是 Windows,git都是版本控制的核心,我们需要使用它来克隆、修改、提交仓库。因为它与本文主题关联性不大所以是一个不做说明的基础。再来看看 Gitee 如何使用。
1:同样需要创建一个账户,以邮箱来注册。进入 Gitee 个人主页,找到右上角的 + 号,选择新建仓库,在新建仓库中只简单需要填写自定义仓库名称、自定义路径、是否开源(公开),其它的不做修改也行,最后选择创建就完成了 Gitee 中仓库的创建。如下图所示:
点开刚才创建的仓库可以看到只有两个文件(初始化的README说明文件),到此用来保存图片的仓库已经创建完成。
2:如何使用这个仓库?在 Gitee 端已经创建了一个储存点,接下来就是通过这个储存点来保存图片了。通过核心工具 git,在本地自选择一个位置 clone 下刚才创建的仓库,然后可以在这个仓库中直接传入图片,也可以创建文件夹分类传入图片。此时你的本地仓库已经有了你想要访问的图片,但远程仓库并没有,所以最后还需要通过 gIt 将本地的仓库推送到远程的 Gitee。推送完成你的远程仓库便有了图片。如下我本地加入了一张,推送完成后:
现在远程仓库已经有了你传入的图片。
3:最后的一步就是生成外链了。如上图所示,在仓库中已经有了所需的图片,该图片通过 Gitee 的仓库来存储,如果我们想要单独一个链接,可以这样操作:点击rbg.jpg该图片,进入它的页面,进入页面后可以看到图片,直接右键复制图片链接其实是不明智的,这时候可以看到浏览器上方的网页链接 https://gitee.com/账户名/仓库名/blob/master/rbg.jpg,此时将参数 blob 改为 raw,便可以得到完整的图片外链:https://gitee.com/账户名/仓库名/raw/master/rbg.jpg。
使用 Gitee 会遇到的问题:
上面只是理想情况下才会这么顺利,基本上是不会这么容易的,下面这些坑才是最有意思、最值得学习的东西。几个大的问题,这里描述下:
1:Github 与 Gitee 如何同时配置SSH(多个 Git 账号的 SSH Key)
配置本地与远端的连接安全问题是很有必要的。多账号这个问题在我刚准备使用 Gitee 时就想到了,所以并不是一个意外的 BUG。这是一个很容易理解的矛盾,当我在使用 SSH 简单配置 Github 的 Key 时,在 .ssh 目录下生成的就是默认 ssh key 名字:私钥——id_rsa、公钥——id_rsa.pub,如果此时继续如此方法配置 Gitee,那么便会覆盖 Github 的 Key,这显然不是我所要的效果(毕竟 Github 才是王道),所以生成 Key 的命令需要做一定的修改:
Windows下原来可以直接调用终端在 C 盘生成:ssh-keygen -t rsa -C "xxxxxxx@qq.com"
在有了一个默认名后,区分原来的 Key 可以指定名字:ssh-keygen -t rsa -C "xxxxxxx@qq.com" -f “gitee_id_rsa” (当然也可以对 Github 做指定名 github_id_rsa)
通过这种指定名字的生成方式,可以生成任意多个 git 账号 SSH Key ,解决了命名矛盾问题。一个新的问题,当将这些公钥 pub 中的内容复制到对应的 Github 或 Gitee 中时,你能直接使用 git 来推送吗?其实是不可以的,虽然命名有了区别,但还需要在 .ssh 目录下添加一个 config 文件,内容如下:
1 | # ~/.ssh/config 配置多个git的ssh-key # 根据实际路径每个Key修改IdentityFile处即可 |
如果还有 Key,依此方式累加即可。现在可以通过终端命令,测试 SSH Key 是否生效(第一次需要输入yes,生成配置文件):
1 | ssh -T git@github.com |
成功如下图所示:
2:push 时报错:remote: Incorrect username or password ( access token )
当完成了上述的配置后,其实就解决了 git 多账号 ssh key 的问题,按着最上面《使用 Gitee》的教程在 git 中 clone、pull、add、commit、push 便可以提交、修改仓库做图床了。但是我这里却遇到了问题,Github 正常使用,但 Gitee 在 push 时却报错,错误如下:
看图内容应该是访问令牌的账户名或密码错误,通过查阅资料,在修改了 Windows 的凭据后该问题得到了解决,主要步骤如下:
打开电脑的:控制面板–>用户账户–>管理Windows凭据–>普通凭据中的gitee(点击编辑,输入正确用户名与密码保存即可)
问题虽然解决了,可还是有点疑惑,这个访问凭据在创建是为什么会错误。。。再次 push 正确推送,返回如下:
做个总结吧:
我通过使用码云(Gitee)创建仓库来作为图床,中途遇到了多账号 ssh key、Windows 凭据等问题,都一一解决了,最终的目的也达到了,但过程和结果任然有很多可以提升和优化的地方,日后做一个补充。虽然无钱工程是最开始的目的,但中途所解决和学习到的知识才最为重要, geek 之路才刚开始。