博客折腾记:主题更新、迁移博客到腾讯云COS以及解决百度收录
本周有空对博客进行新一轮折腾,现在将这些尝试记下来和大家分享。
1. 主题更新
我在 博客折腾记:使用 Travis CI 自动部署 中提到将主题以 modules 的形式加入主仓库。而且现在使用的主题 git 仓库是我自己 fork 的,也有一些修改。几个天之前,hexo-theme-even 的 master 接受 feat: add LaTeX support by JieJiSS · Pull Request #236 ,完成对 LaTeX 公式的支持。所以,我需要将使用的代码和最新的代码合并。
这里使用的是 github Pull request 功能。在你自己 fork 的仓库的网页上点击 new pull request
,然后按照下图修改。就会生成一个新的 Pull request 。
而且,如果你没有修改过原来的代码,PR 能自动合并。不过由于我对代码做了一些修改,会产生一些冲突,需要手动解决冲突(这里推荐使用 VS code)。出现下图的情况即成功合并两个库。
完成 PR 后,进入你站点下面的对应主题目录,使用 git checkout master
切换到主题的 master 分支,使用 git pull origin master
拉取最新的代码。回退到站点目录下,利用 git add
更新。
2. 迁移博客到腾讯云COS
利用腾讯云存储博客的静态文件,并配合使用 CDN 可以加快国内的访问速度。参考 Hexo博客迁移之旅(Coding到腾讯云COS)+ Travis CI持续集成 - 个人文章 - SegmentFault 思否 以及 如何在腾讯云COS部署HEXO博客 - 云+社区 - 腾讯云 。
记录两个我遇到的坑。
新的域名解析
完成 COS 配置后,需要将博客域名解析到腾讯提供CDN节点上的地址。
添加持续集成自动发布到COS(Travis CI)
为了发布到 COS,站点的 _config.yml
会添加下面的代码。
1 | deploy: |
其中出现的 secretId 以及 secretKey 是私钥,不要在公开仓库展示。通过Travis-ci 中添加 Environment Variables 解决。
很多教程里,他们的 _config.yml
不会出现 secretId 和 secretKey 这两行,取而代之的是让你在 .travis.yml
添加几行。
1 | script |
按照这样设置,build 时,出现错误提示如下:
1 | { error: |
出现这个问题是 hexo -d
时,_config.yml 无法获得环境变量 secretId 和 secretKey 的。会导致没有秘钥。
参考 使用 Travis CI 部署你的 Hexo 博客 - 知乎 ,在 .trvis.yml 文件的 hexo d
命令前,加入下面两行即可解决。
1 | - sed -i "s~XXX_ID~${secretId}~" _config.yml |
之后build 时,会自动利用环境变量中 secretId 和 secretKey 的值替换 _config.yml
文件缺省的值。
最后提供我的两份配置文件给大家参考:_config.yml、.travis.yml。
3. 百度收录
之前,我一直将博客的静态文件存储在 github 的项目中,也使用插件生成 baidusitemap 文件。但是由于一些不为人知的秘密,百度的爬虫实际上无法爬取 github 上的资源,导致博客最新的文章没有被收录到百度中。
而且从百度提供的抓取诊断上来看,配置腾讯云 COS 后,百度的爬虫依然访问的是 github 上的仓库。
一顿搜索之后,找到一个主动提交 hexo 博客链接至百度的插件 huiwang/hexo-baidu-url-submit。
参考 Hexo插件之百度主动提交链接 | 王辉的博客 以及 Hexo百度主动提交链接 - 简书 完成配置。
- 安装插件
cnpm install hexo-baidu-url-submit --save
- 修改根目录下面的
config.yml
文件,配置 baidu_url_submit 和 deploy。
1 | baidu_url_submit: |
上面的代码中出现一个 token,由于这是一个私有的,不能出现在 github 公开的仓库中。所以也需要 Travis-ci 中添加 Environment Variables 解决。和前文提到相同,在 .travis.yml
中添加 - sed -i "s~your_token~${BD_TOKEN}~" _config.yml
解决私钥问题。
最终在 travis-ci 中发现下面的日志即配置成功。另外一点,百度的站长平台的数据不能及时展示我们提交后的结果,需要耐心等待。