Please enable Javascript to view the contents

如何将博客从 Ghost 迁移到 Hexo

 ·  ☕ 2 分钟

1. Hexo 简介

Hexo 是使用 Node.js 开发的一个简洁、高效、开源的静态博客生成器。Hexo 能够以非常快的速度将 Markdown 渲染成静态的 HTML 文件。类似于 Jekyll、Ghost、Octopress,可以用于创建博客。

Hexo 具有如下优势:

  • 使用 Node.js ,搭建环境简单。Jekyll 搭建环境非常麻烦。
  • 方便托管到 GitHub Pages ,由于 Hexo 生成的是 HTML ,十分方便部署
  • 支持 Markdown

2. 安装 Hexo

安装 Node.js 和 NPM 之后,建议更换为国内的 NPM 源,加快依赖包的安装速度

1
2
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install install

安装 Hexo

1
cnpm install -g hexo 

初始化 Hexo

1
hexo init myblog

生成 scaffolds、drafts、public、db.json、_config.yml、package.json、theme 等文件。

本地启动服务,默认为 4000 端口

1
2
3
4
cd myblog
hexo s
# 指定服务端口为 80
hexo s -P 80

3. Ghost 迁移文章

由于之前使用 Ghost 搭建博客,需要从 Ghost 后台,导出 json 格式的博客数据。然后,通过 Hexo 插件工具,将 json 数据转换为 Markdown 文件。

安装 hexo-migrator-ghost

1
npm install -g hexo-migrator-ghost

导入数据,转换为 Markdown 文件

1
hexo migrate ghost <source.json>

执行完毕后,在 source 目录下,会自动生成每篇文档对应的 Markdown 文件。

4. 发布到 GitHub Pages

第一步,在 GitHub 新建一个 your_name.github.io 的项目。

第二步,在 _config.yml 中配置 repo

1
2
3
4
5
deploy:
  type: git
  repo:
    github: [email protected]:your_name/your_name.github.io.git
  branch: master

第三步,生成 HTML

1
hexo generate

第四步,部署到 GitHub Pages

1
hexo deploy

根据提示输入账户,密码即可完成部署。通过 http://your_name.github.io 访问博客。

5. CI 自动发布

由于仅使用 GitHub Pages 作为博客的发布地址,还需要一个仓库地址用于托管 Hexo 项目,还有 Markdown 源文件。

第一步,在 GitHub 的 https://github.com/settings/keys 页面,生成一对 SSH Key ,点击【Add SSH key】将 pubulic key 填入其中。

第二步,在 GitLb 项目的 【settings/ci_cd】页面,【Secret variables 】处,新增环境变量 DEPLOY_KEY,值为 private key。

第三步,配置 CI 流程。使用 GitLab 作为 Hexo 源码托管仓库,通过 CI 自动发布到 GitHub Pages。

在根目录下,新建文件 .gitlab-ci.yml 内容如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
image: node:4.2.2
pages:
  cache:
    paths:
    - node_modules/
  before_script:
  - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
  - eval $(ssh-agent -s)
  - ssh-add <(echo "$DEPLOY_KEY")
  - mkdir -p ~/.ssh
  - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
  script:
  - npm install hexo-cli -g
  - npm install
  - hexo deploy
  artifacts:
    paths:
    - public
  only:
  - master

如果没有 CI 配置,那么需要在本地生成 HTML 文件,再部署到 GitHub Pages 。通过配置 CI ,现在仅需要将 Markdown 文件提交到 GitLab ,GitLab CI 将自动完成部署。


微信公众号
作者
微信公众号