biped

从Ghost迁移到Hexo

2015-05-26

花了些时间将博客从 Ghost 迁移到 Hexo,专注内容,不折腾。关于 Hexo 的介绍和教程网上有很多,这里不再赘述。下文简短记录 Mac 下迁移过程,遇到的问题,以及解决方案。

安装程序

本着不折腾的原则,Node 选用 LTS 版,主题选用稳定版。

# 安装node
brew install node4-lts

# 安装hexo
npm i -g hexo-cli
hexo init blog
cd blog
npm i

# 安装主题
cd themes/
wget https://github.com/iissnan/hexo-theme-next/archive/v5.0.1.zip
unzip v5.0.1.zip
mv hexo-theme-next-5.0.1 next

# 编辑_config.yml文件,启用主题

安装过程中遇到下载很慢的问题,通过替换npm源来解决:

npm config set registry "https://registry.npm.taobao.org/"

迁移数据

从 Ghost 后台导出数据为 JSON 格式,使用hexo-migrator-ghost插件导入数据至 Hexo,生成的文件保存在source/_drafts/source/_posts/目录,手动修正部分格式错误。

配置站点

修正标签路径

Ghost 默认标签路径为/tag/,而 Hexo 默认标签路径为/tags/;Ghost 标签路径名全部小写,而 Hexo 默认标签路径名保持不变;以上问题,修改_config.yml配置文件:

tag_dir: tag

tag_map:
  Android: android
  Kindle: kindle
  WordPress: wordpress

修正页面标题

博客原有title规则是文章或页面标题加上- biped,为确保一致,通过修改各个主题模版内的block title部分解决。

指定文章展示数目

期望每页展示最新 3 篇文章的标题和内容,归档页展示所有文章标题,并且不生成按年索引和按月索引,修改_config.yml配置文件:

index_generator:
  per_page: 3

archive_generator:
  per_page: 100
  yearly: false
  monthly: false

搜索引擎优化

保存在source目录下的文件会在生成站点时直接复制到站点根目录,因而可以用来创建图片上传目录,头像和 favicon 等静态文件的目录,以及自定义 html 页面。

创建 404 页面,保存到source目录,并指定 Hexo 跳过对该页面的渲染:

skip_render: 404.html

创建 robots 文件,保存到source目录,禁止爬取重复内容和无关文件:

User-agent: *
Sitemap: http://biped.me/sitemap.xml
Disallow: /page/
Disallow: /404.html
Disallow: /CNAME
Disallow: /feed.xml

使用hexo-generator-feed插件生成 RSS,使用hexo-generator-sitemap插件生成 sitemap。

实时预览

使用hexo-browsersync插件实现实时预览文章内容变更,或主题样式修改:

npm i -S hexo-browsersync
hexo s

解析域名

Github 有两种绑定域名的方式,一是将二级域名 CNAME 到 Github Pages 地址,二是添加 A 记录将顶级域名指向 Github 提供的 ip 地址。第一种方式可以很好的使用 Github CDN,第二种方式什么都没有。折中的办法是在 DNSPod 将顶级域名 CNAME 到 Github Pages 地址,但这样会导致 CNAME 记录和 MX 记录冲突,一些老旧的邮件服务无法正常发送邮件到该域名。

线上部署

使用hexo-deployer-git部署博客到 Github 的过程中可能会遇到代码提交非常慢的问题,通过设置 Git 代理解决。

# 本带SS代理端口1080
git config --global http.proxy socks5://127.0.0.1:1080

biped
前端工程师

热爱文字和生活