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 必须相同。

  1. 建立 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': 如前面设定有,就要输入密钥
  1. 部署 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

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

  1. 解析域名 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 安装 Hexo)