图片来源:pixiv 40872946
更新于 2018.7.11
首发于夏味的博客: xiaweiss.com
作为一个 web 程序员,当然也想有自己的自留地 于是就研究起了搭建博客,来记录自己的成长 了解之后,发现 github + hexo 是个门槛很低的,效果很好的方式 hexo 基于 markdown,意味着不需要关心文章排版,也不需要学习编程 github 提供了免费空间、域名以及代码管理的工具,解决了服务器问题
1. 准备工作
1.1 安装 chrome 浏览器,百度下载即可
1.2 注册一个 Github 账号
如果看不懂英语,可以点这个小按钮来全文翻译(失败的话可以多试几次,或使用其他翻译软件)
1.3 创建一个Repo
登录 Github(初次注册后会自动登录),点击右上角"+",再点第一行 "新存储库"(New repository)
第一次要求验证邮箱,邮箱里会收到 Github 发来的邮件,点那个最长的链接就ok
存储库名称格式为 yourname.github.io。比如,我个人的 Github 账户用户名是 xiaweiss,所以,我的这个 Repo 的名称就是 xiaweiss.github.io
1.4 本地安装好 git 和 npm
下载自己系统对应的安装包,安装 windows 下载第一行的 msi 类型即可,位数按系统的位数即可,一般选64-bit
git下载地址 | node下载地址
安装过程中,不用选择,一直点 next下一步即可 安装好之后,运行其他系统运行 terminal 命令行工具 windows 系统,在桌面或任意文件夹内,右击,运行 git bush here
(下文的命令行中的命令,每行代表一个命令,行末必须按回车键Enter)
在命令行中输入
git --version 回车键Enter
npm --version 回车键Enter
复制代码
如果看到版本号,则成功。否则重新安装
1.5 安装好 Atom
进入 atom编辑器 官网,下载安装它
启动 Atom 之后, 点击 Packages 安装插件
请搜索并安装以下 markdown 插件
markdown-writer tool-bar tool-bar-markdown-writer markdown-scroll-sync markdown-pdf
或者也可以使用其他你喜欢的 markdown 文件编辑工具
2. 本地搭建站点
2.1 安装 hexo
在命令行中继续输入
npm config set registry https://registry.npm.taobao.org
npm install hexo -g
npm install hexo-cli -g
复制代码
2.2 初始化你的本地站点
去 Github 把你的 Repo 的 git 地址拷贝出来。 我的是 https://github.com/xiaweiss/xiaweiss.github.io.git 你的是 https://github.com/yourname/yourname.github.io.git (其中,yourname 应该换乘你的 Github 用户名)
然后在 Terminal 面板里输入
cd ~/Public (windows中 cd /d)
hexo init yourname.github.io
cd yourname.github.io
npm install hexo-deployer-git --save
hexo generate
hexo server
复制代码
这些完成之后,你就可以打开浏览器,在地址栏里输入: localhost:4000
,在本地先看看网站是什么样子了。
3. 本地站点发布到 Github 上
3.1 修改 hexo 配置文件
关闭命令行,重新打开一个命令行
cd /d/yourname.github.io
atom . (注意符号点前面有空格)
复制代码
在 Atom 的左侧面板中,选择 _config.yml 文件,找到 deploy 那一部分(末尾的79行)
deploy:
type:
(空行)
复制代码
改成:
deploy:
type: git
repo: https://github.com/yourname/yourname.github.io.git
复制代码
Ctrl+S 保存
3.2 github 生成一个ssh-key配置
https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/ 打开命令行
git config --global user.name "yourname"
git config --global user.email "[email protected]"
ssh-keygen -t rsa -b 4096 -C "[email protected]" (替换为你的GitHub电子邮件地址)
复制代码
接着会出现几次提示,如下图箭头处,直接按回车Enter键即可
将ssh-key添加到 Github
打开Github,点击右上角的头像,再点设置
命令行中继续输入
cat ~/.ssh/id_rsa.pub
复制代码
然后可以看到一堆编码,见下图,把红框里的部分复制了。
在用户设置侧栏中,单击 SSH and GPG Keys(SSH和GPG密钥),然后单击右上角绿色的 New SSH key(新的SSH密钥)
然后可以看到这个界面,Title标题随意填。key密钥里,把刚刚复制好的编码粘贴进去,然后点下面 Add SSH key
出现这个界面,表示成功了
最后一步,命令行中输入,就可以发布到 Github 了
hexo deploy
复制代码
打开 https://yourname.github.io 就可以看到博客了
4. 日常使用
打开命令行
cd /d/yourname.github.io
atom .
复制代码
即可启动编辑器,并且打开项目目录
使用 md 后缀的 markdown 格式,来写文章。语法请参考 《献给写作者的 Markdown 新手指南》
使用 atom 编辑器来 编辑md文件,打开md文件时 ctrl+shift+m 即可看到预览区域
_draft 文件夹用来存没写完的草稿 _posts 文件夹用来存要发布出去的文章 _images 文件夹用来存文章中的图片
以上文件夹下,直接放文章,不要放子文件夹 文件名命名格式推荐 20171008-file-name.md 文件名不要使用中文,中文不利于检索文件名
文章顶部 按模板的语法
---
title: 标题
date: 2017-10-08
tags: 标签
category: 分类
---
复制代码
其中 date 是发布日期注意不要使用模板的 { date }
写法,这种写法一旦标题改变或者数据文件 db.json 或 /public 丢失,发布日期会改变
多个标签或分类时,这样写
tags:
- 标签1
- 标签2
复制代码
图片 可以用 ![](/images/20171008-image-name.png)
语法来引入
表示预览区的分界线,主页面只会显示它之前的内容。
复制代码
写完文章后,本地网站查看效果
cd /d/yourname.github.io
hexo g
hexo s
复制代码
发布到 Github
cd /d/yourname.github.io
hexo g
hexo s
复制代码
5. 备份本地代码 和 数据
5.1 坚果云备份
由于Github是开源的,备份到Github,别人容易下载拿走,考虑到私密性,推荐使用 坚果云 来自动备份
找到 yourname.github.io 文件夹右击,选择坚果云
,选择同步到个人空间
,即可
5.2 Github 备份
如果为了不引入其他工具,也可以使用 Github 来备份:
打开命令行
cd /d/yourname.github.io
git init
git checkout -b source
git add . (注意点前面有空格)
git commit -m "init"
git remote add origin https://github.com/yourname/yourname.github.io.git
git push -u origin source
复制代码
每次备份操作,打开命令行:
cd /d/yourname.github.io
git add .
git commit -m "本次备份的提示语"
git push
复制代码
误删本地文件夹,从备份的代码恢复整个 yourname.github.io 文件夹:
cd /d
git clone https://github.com/yourname/yourname.github.io.git
git checkout source
npm install
复制代码
如果是在新的电脑恢复 整个 yourname.github.io 文件夹, 需要先重复步骤1 ~ 步骤2,并且其中以下步骤直接跳过,然后再执行上面命令 1.2 注册一个 Github 账号 1.3 创建一个Repo 2.2 初始化你的本地站点
6. 进阶优化配置
以下部分非新手向,只写要点,按需食用
6.1 版本控制
使用 git 来控制版本 为方便切换分支, master分支添加 .gitignore 文件 master分支、source分支内容统一为
.DS_Store
*.log
node_modules/
public/
.deploy*/
.idea/
复制代码
6.2 主题更换
使用 NexT.Pisces 主题为例,详细中文文档
注意当一个repo包含其他repo时,使用命令 git submodule add
来安装并且分开管理,而不是 git clone
,
git submodule add https://github.com/iissnan/hexo-theme-next themes/next
复制代码
至于主题配置文件,可以保存一份副本到 themes 文件夹里提交到自己的仓库
注意切换主题后,如果显示不正常,运行 hexo clean
来清理数据 特别注意hexo clean
同时会清除掉历史文章的发布日期,慎用!
clone 含有子repo 的项目后,子 repo 目录内没有内容,还需要执行下面两个命令来 clone 子repo
git submodule init
git submodule update
复制代码
6.3 文章末尾添加评论区
目前由于国内审核机制,国内服务说不定哪天就关闭了。所以推荐国外的服务,比较稳定。使用国外的服务,需要代理上网访问国外,没有的用户则不显示评论区。
添加Disqus评论
6.4 目录序号
主题会自动给文章的标题和子标题生成目录,并且加上序号 如果要自己写序号,不需要主题自带序号,修改主题配置文件 _config.yml 里的 toc 后面的 member 配置为
156行 number: false
复制代码
6.5 图片引用
推荐不使用图床,直接把统一图片存在本地文件夹
目前不支持 atom markdown预览 和 本地网站里同时正常预览图片
建议编辑时使用 ![](../images/xxx.png)
发布时用atom ctrl+f 统一把 ../
替换为 /
即可
6.6 统计
阅读量统计可以使用 LeanCloud 计数,注意主题配置文件里有两处 LeanCloud,要配置leancloud_visitors
或者直接使用 不蒜子统计 即可,可同时实现阅读量统计、PV、UV功能。
个人建议,LeanCloud统计阅读量,不蒜子统计PV、UV
LeanCloud 配置 不蒜子配置
6.7 修改样式
next 主题使用 stylus 预编译样式语言
可以在 themes\next\source\css\_custom\custom.styl
文件里写自己的 stylus 样式
例如:首行缩进,添加如下代码:
p
text-indent 2em
复制代码
6.8 显示更新日期
修改主题配置文件 _config.yml,找到 updated_at,修改为
updated_at: true
复制代码
然后就会显示更新的日期了
如果需要手动设置,可以在文章的标签里加入 updated
,如下
---
title: 使用 Hexo 为自己在 Github 上建一个静态 Blog博客 站点
date: 2017-10-08
updated: 2017-11-11
file-title: {{ title }}
tags: Hexo
---
复制代码
6.9 底部添加备案信息、或者其他文字
在主题配置文件里找到 custom_text 这行,修改一下即可
#custom_text: Hosted by GitHub Pages
custom_text: Xiaweiss.com 京ICP备17057895号
复制代码
或者在主题配置文件里找到 copyright: 这行,修改为
# If not defined, will be used `author` from Hexo main config.
copyright: "http://xiaweiss.com">Xiaweiss.com 京ICP备17057895号
复制代码
6.10 设置搜索服务
使用免费的 local search npm 安装包
npm install hexo-generator-searchdb --save
复制代码
next 主题配置文件里,修改配置文件 top_n_per_article 指正文的搜索结果,显示几条。 -1 代表全部显示
local_search:
enable: true
# if auto, trigger search by changing input
# if manual, trigger search by pressing enter key or search button
trigger: auto
# show top n results per article, show all results by setting to -1
top_n_per_article: 3
复制代码
6.11 添加分类、标签页
可以按官方文档设置 创建分类页面 创建标签云页面
但以上设置会导致多出2个文件夹,而且以后不会在里面放其他文件,所以我个人推荐这样设置 在 source 目录下: 新建 文件 categories.md:里面写
---
title: 分类
type: "categories"
comments: false
---
复制代码
新建 文件 tags.md:里面写
---
title: 标签
type: "tags"
comments: false
---
复制代码
然后修改主题配置文件,menu设置里的 categories、tags
menu:
home: / || home
categories: /categories.html || th
tags: /tags.html || tags
复制代码
6.12 设置滚动
主题配置文件里
scroll_to_more: true
复制代码
表示从主页进去文章后,直接自动滚动到文章中 more 标签的位置,可以看到网址里多了#more 如果需要去掉,设置为false即可
save_scroll: false
复制代码
表示在本地存储阅读的进度(滚动到的位置),刷新或再次打开页面时,可以接着读。 建议打开这个功能,设置为true即可
7. 界面美化
7.1 右下角 live2d 小人
中文文档 EYHN/hexo-helper-live2d
下面是我目前旧版2.1.5的使用方式,最新版请参考hexo-helper-live2d 中文文档
旧版配置方式:
安装
cd yourname.github.io
npm install [email protected]
复制代码
在 yourname.github.io 的 hexo 配置文件 _config.yml
里添加配置项
# Live2D
## https://github.com/EYHN/hexo-helper-live2d
live2d:
model: koharu # 模型名称 默认值: z16
width: 150 # 宽度 默认值: 150
height: 300 # 高度 默认值: 300
scaling: 1 # 分辨率缩放倍率 默认值: 2
opacityDefault: 1 # 初始的透明度 默认值: 1
#opacityHover: 1 # 鼠标悬浮时的透明度 默认值: 1
mobileShow: true # 是否在移动设备上显示 默认值: true
mobileScaling: 0.5 # 移动设备缩放倍率 默认值: 0.5
position: right # 模型左右侧放置位置 默认值: right
horizontalOffset: 0 # 元素的水平偏移 默认值: 0
verticalOffset: -20 # 元素的底部偏移 默认值: -20
className: live2d # 元素的类名 默认值: live2d
id: live2dcanvas # 元素的id 默认值: live2dcanvas
复制代码
我自己使用的是 koharu,如果需要其他的,改为相应的名字即可 旧版所有小人请看作者大大博客 hexo live2d插件 2.0 !
接下来,在 next/layout/_layout.swig
文件里,找到