从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