导航

Hexo for Github

2016-8-12 13:12:10 修复教程。

花两天时间学习搭建 hexo。把网站部署在 Github Page 不用在乎主机被攻击,不用在意流量不够用,更不用担心数据备份,因为数据都在你的电脑上。发布文章只要一条命令搞定。

hexo clean && hexo g && hexo d

本来打算部署在国内环境 coding.net,但步子大了容易扯蛋蛋。中间尝试过一下,有点小问题,有时间再深入研究下迁移至国内环境 Coding.net,和同步 Github 和 Coding.net,先完善 Github。

预览

Demo

环境准备

Windows 10    Nodejs v6.20    Git v2.9.2    hexo 3.2.2

$ hexo -v
hexo: 3.2.2
hexo-cli: 1.0.2
os: Windows_NT 10.0.14393 win32 x64
http_parser: 2.7.0
node: 6.2.0
v8: 5.0.71.47
uv: 1.9.1
zlib: 1.2.8
ares: 1.10.1-DEV
icu: 57.1
modules: 48
openssl: 1.0.2h

建立推送仓库

1. 注册 Github,建立代码仓库:Repository name 和 Owner 必须相同。

2.  建立 SSH
打开 Git Bash 输入:

cd ~
ssh-keygen -t rsa -C "mail@gmail.com"                                     # 输入 Github 邮箱
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa): 回车
Enter passphrase (empty for no passphrase): 回车
Enter same passphrase again: 回车
Your identification has been saved in /c/Users/用户/.ssh/id_rsa. 
Your public key has been saved in /c/Users/用户/.ssh/id_rsa.pub. // 获得私钥文件
The key fingerprint is:
SHA256:Pz18VXWjX9taUSXmM/eooxxooxxooxxmkCie3eE6at6XtY mail@gmail.com
The key's randomart image is:
+---[RSA 2048]----+
| . . ooxx++O|
| . o ooxx.= |
| . + .+=ox+ |
| . . o o=+OX|
| . Sox ++ +=|
| . o * ox+  |
| * E o      |
| .+ . ox    |
| .+ox       |
+----[SHA256]-----+
# 完成

2. 导入 SSH keys

打开 C:\Users\用户.ssh\id_rsa.pub  复制参数到 Github 的 New SSH keys

导入后做测试

ssh -T git@github.com
# 输入 yes 显示

另一种情况:

Enter passphrase for key '/c/Users/用户/.ssh/id_rsa': 如前面设定有,就要输入密钥

3. 部署 Github 身份(VPS 忽略)

git config --global user.name "Account"          # Github 用户
git config --global user.email "mail@gmail.com"  # Github 邮箱

完成部署 Github 推送环境。

本地部署

Git Bash 输入
1. 安装全局环境 hexo

cd
npm install hexo -g
# npm 路径:C:\Users\用户\AppData\Roaming\npm\node_modules

国内主机源:
# 永久:npm config set registry https://registry.npm.taobao.org
# 临时:npm --registry https://registry.npm.taobao.org install express
# 检测:npm config get registry
# 默认:https://registry.npmjs.org

2. 初始化 hexo

hexo init hexo                        # 建立 hexo 文件夹并部署
# 如需自定义 hexo 博客位置。命令:hexo init C:/Hexo

cd hexo
npm install hexo-deployer-git -save   # 必须在 hexo 目录安装,文章 git 推送关键

3. 修改 hexo 配置文件_config.yml

# Deployment
## Docs: https://hexo.io/docs/deployment.html 
deploy:
 type:空格git                                              # hexo3.0 后默认 git,老版本是 github
 repository:空格git@github.com:bpplpp/bpplpp.github.io.git # 修改自己 Github 地址
 branch:空格master                                         # 分支

hexo 部署完毕。

常用命令

1. 在 hexo 目录才可执行

hexo g ==> hexo generate # 生成 public 静态文件
hexo d ==> hexo deploy   # 将 .deploy 目录推送至远程
hexo s ==> hexo server   # 开启 localhost:4000 演示
hexo n ==> hexo new      # 新建文章(文章数据路径:hexo\source\_posts)
hexo v                      # 查看环境版本
hexo s -p 5000              # 指定端口,解决占用

2. 本地演示
hexo s 访问:http://localhost:4000

3. 新建文章

hexo n 标题title        # 生成路径 hexo\source\_posts

4. 推送文章

hexo clean && hexo g && hexo d
(清理缓存,生成静态网页,推动远程)
# INFO Deploy done: git 出现才算推送到 Github 成功!
# ERROR Deployer not found: git 出错

5. 更换主题

cd hexo
git clone https://github.com/iissnan/hexo-theme-next themes/next

再修改 hexo 配置文件_config.yml 定义主题:

# Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
theme: next

绑定域名

1. 点击 New file

2. 输入名字 CNAME 内容为 website.com ,点击下方 Commit new file 提交。
更新:只需在本地 hexo/source 新建同样文件(防止推送内容删除解析记录 error 404)

3. 解析域名 A 记录到 Github 主机 ip

192.30.252.153
192.30.252.154
...

博客迁移 hexo

https://hexo.io/zh-cn/docs/migration.html
一次从wordpress转hexo的经历

官方教程:
1.导出 wordpress 数据 xml
2.安装插件

cd hexo
npm install hexo-migrator-wordpress --save  # 安装迁移插件
hexo migrate wordpress source               # source 为导出 XML 路径

举例

hexo migrate wordpress C:/Users/xxx/Desktop/wordpress.2018-08-08.xml

导出路径

hexo\source\_posts

_config.yml 详解

① hexo 配置文件 _config.yml

# Hexo Configuration
## Docs: https://hexo.io/docs/configuration.html
## Source: https://github.com/hexojs/hexo/
# Site
title:              # 站点标题
subtitle:           # 站点副标题
description:        # 描述
author: bpplpp      # 作者
language: zh-CN     # 语言
timezone:           # 时区

# URL
## 如果您的网站存放在子目录中,例如 http://yoursite.com/blog,则请将您的 url 设为 http://yoursite.com/blog 并把 root 设为 /blog/。
url: http://hexo.bpplpp.com
root: /blog
permalink: :year/:month/:day/:title/ # 生成文件名字的格式,例 blog/:title:year:month:day/
permalink_defaults:

# Directory
source_dir: source       # 源文件夹,这个文件夹用来存放内容
public_dir: public       # 公共文件夹,这个文件夹用于存放生成的站点文件
tag_dir: tags            # 标签文件夹
archive_dir: archives    # 归档文件夹
category_dir: categories # 分类文件夹
code_dir: downloads/code #nclude code 文件夹
i18n_dir: :lang          # 国际化(i18n)文件夹
skip_render:             # 跳过指定文件的渲染,可用 glob 表达式来匹配路径

# Writing
new_post_name: :title.md # 新建文章默认文件名
default_layout: post     # 默认布局
titlecase: false         # 标题首字母大写
external_link: true      # 在新标签中打开一个外部链接,默认为 true
filename_case: 0         # 转换文件名,1 小写;2 大写;默认 0
render_drafts: false     # 是否渲染_drafts 目录文章,默认为 false
post_asset_folder: false # 启动 Asset 文件夹
relative_link: false     # 把链接改为与根目录的相对位址,默认 false
future: true             # 显示准备发表文章,默认 false
highlight:               # 代码块的设置
enable: true
line_number: true
auto_detect: false
tab_replace:

# Category & Tag
default_category: uncategorized  # 默认分类
category_map:                    # 分类别名
tag_map:                         # 标签别名

# Date / Time format
## Hexo uses Moment.js to parse and display date
## You can customize the date format as defined in
## http://momentjs.com/docs/#/displaying/format/
date_format: YYYY-MM-DD
time_format: HH:mm:ss

# Pagination                      # 分页
## Set per_page to 0 to disable pagination
per_page: 10                      # 每页显示的文章量 (0 = 关闭分页功能)
pagination_dir: page              # 分页目录

# Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
theme: next

feed:
type: atom       #feed 类型 (atom/rss2)
path: atom.xml   #rss 路径
limit: 20        # 在 rss 中最多生成的文章数 (0 显示所有)

# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repository: git@github.com:username/username.github.io.git
branch: master

②主题配置文件 _config.yml
每个主题配置情况不同,以 next 例可参考主题作者文档:
http://theme-next.iissnan.com/getting-started.html

主题集

https://hexo.io/themes/
https://github.com/hexojs/hexo/wiki/Themes
https://www.zhihu.com/question/24422335

问题集

1. The file will have its original line endings in your working directory.
文件夹远程不存在,不影响使用。

2. 更换主题布局错乱,修改 hexo 的_config.yml

# URL
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
url: http://hexo.bpplpp.com # 改为自己的域名
root: /
permalink: :year/:month/:day/:title/
permalink_defaults:

3.ERROR Deployer not found: git

安装

npm install hexo-deployer-git -save

一定要进入到博客目录hexo安装,不然坑。

4.FATAL can not read a block mapping entry 类似问题
_config.yml 里冒号:后添加空格x1,语法要求。

5.fatal: Could not read from remote repository.
降低 Git 版本到 Git 2.5 下载旧版

6.ERROR Deployer not found: git
解决

deploy:
  type: git
  repository: https://github.com/bpplpp/bpplpp.github.io
  branch: master

Github 主机速度别想太快,文章已经写了很久,这次抽时间出来修复遗漏,又折腾了一上午~其它问题待碰到再补充。

学习:
Hello Hexo
hexo常用命令笔记
WillXue's Blog-hexo 分类
[使用 GitHub 和 Hexo 搭建免费静态 Blog](http://wsgzao.github.io/post/hexo-guide/# 安装 Hexo)


2016-04-19
选择表情