什么是 Hexo?
Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。
系统环境
Distributor ID: CentOS
Description: CentOS Linux release 7.6.1810 (Core)
Release: 7.6.1810
CPU: 2 Core
内存容量: 2G
Git Version: 1.8.3.1
Nvm Version: 0.34.0
Node.js Version: v12.10.0
Npm Version: 6.11.3
Hexo Version: 3.9.0
Hexo-cli Version: 2.0.0
环境准备
安装Git
Linux (CentOS):
| 1 | # sudo yum -y install git-core | 
安装 Node.js
安装 Node.js 的最佳方式是使用 nvm。nvm 的开发者提供了一个自动安装 nvm 的简单脚本:
安装nvm
Curl:
| 1 | # curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | sh | 
或Wget:
| 1 | # wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | sh | 
使用nvm安装node
安装完成后,重启终端并执行下列命令即可安装 Node.js。
| 1 | # nvm install node | 
搭建Hexo博客系统
安装Hexo
Node 和 Git 都安装好后,可执行如下命令安装 Hexo:
| 1 | npm install -g hexo-cli | 
初始化Blog目录
然后,执行 init 命令初始化 Hexo 到你指定的目录:
| 1 | # hexo init <folder> | 
也可以 cd 到目标目录,执行
hexo init。
安装Hexo依赖包
初始化完成后,cd进入该初始化的目录blog下,使用npm安装Hexo对应的依赖包。
| 1 | # cd blog | 
好啦,至此,全部安装工作已经完成!
更换Hexo主题
本文以 hexo-theme-pure 主题为例,安装主题的方法就是一句 git 命令:
在终端命令行窗口下,切换到 Hexo 站点目录blog目录下。使用 Git checkout 代码:
| 1 | # cd blog/theme | 
安装完成后,打开Hexo站点目录blog的配置文件_config.yml,修改主题为 hexo-theme-pure
| 1 | theme: hexo-theme-pure | 
打开 blog/themes/hexo-theme-pure 目录,编辑主题配置文件_config.yml,修改自己想要的配置:
| 1 | # menu | 
主题其它使用配置及常见问题点此:主题hexo-theme-pure使用文档
更新主题
切换到Hexo站点blog的主题hexo-theme-pure目录下
| 1 | cd blog/themes/hexo-theme-pure | 
写文章
使用系统默认编辑器vim编写Markdown文档
执行 new 命令,生成指定名称的文章至 blog/source/_posts/postName.md。
| 1 | hexo new [layout] "postName" # 新建文章 | 
其中 layout 是可选参数,默认值为 post。有哪些 layout 呢,请到 scaffolds 目录下查看,这些文件名称就是 layout 名称。当然你可以添加自己的 layout,方法就是添加一个文件即可,同时你也可以编辑现有的 layout,比如 post 的 layout 默认是 blog/scaffolds/post.md
| 1 | --- | 
请注意,大括号与大括号之间我多加了个空格,否则会被转义,不能正常显示。
我想添加 categories,以免每次手工输入,只需要修改这个文件添加一行,如下:
| 1 | --- | 
postName 是 md 文件的名字,同时也出现在你文章的 URL 中,postName 如果包含空格,必须用 ’ ’ 将其包围,postName 可以为中文。
注意:所有文件,开头要遵循YAML文件格式,即冒号: 后面都必须有个空格,不然会报错。
看一下刚才生成的文件 hexo/source/_posts/postName.md,内容如下:
| 1 | --- | 
使用Windows上的图形编辑器Typora编写Markdown文档
在Windows上安装软件Typora,开始编写Markdown文档,注意Markdown文档的开头必须有以下内容:
| 1 | --- | 
将编写好的文档上传到Hexo服务器上的站点blog目录下的source/_post目录下,然后重启Hexo服务即可。
关于Markdown 语法说明可以参考该链接:Markdown语法说明文档。
Hexo 中所有文件的编码格式均是 UTF-8。
本地前台启动Hexo
执行如下命令,启动本地服务,进行文章预览调试。
| 1 | # hexo server # 简写命令 hexo s | 
打开浏览器测试访问前,先禁用系统自带的防火墙firewalld和SELinux服务,执行如下命令
| 1 | # systemctl stop firewalld.service | 
浏览器输入 http://IPADDRESS:4000 就可以看到效果,如下图所示:
注:IPADDRESS,请使用ifconfig命令在服务器上查看

PM2工具管理Hexo开机自启且后台运行
安装PM2管理Hexo后台运行
使用npm包管理器安装pm2工具
| 1 | # npm install -g pm2 | 
在Hexo的初始化目录blog目录下,添加一个名叫 hexo_run.js 的脚本,脚本内容如下:
| 1 | //this is a json script,be used for run hexo backstage | 
使用以下命令可以使hexo在后台运行
| 1 | # pm2 start hexo_run.js # 启动Hexo | 
PM2设置开机自启动
| 1 | # pm2 save # 保存当前pm2进程状态 | 
部署静态页面到Github Pages 或 Coding Pages
注册申请GitHub用户或Coding用户
GitHub用户和Coding用的注册,此处不做介绍,自行百度解决。
配置SSH连接Github或Coding
添加 SSH-Key
首先设置你的用户名和邮箱地址:
| 1 | # git config --global user.name "username" | 
生成密钥
| 1 | # ssh-keygen -t rsa -C "email@example.com" | 
想简单,过程一路回车。
| 1 | # ssh-keygen -t rsa -C "your_email@youremail.com" 你的email帐户 | 
上述命令若执行成功,会在 /root/.ssh/ 目录下生成两个文件 id_rsa 和 id_rsa.pub。
添加ssh密钥到Github
在命令行用cat命令读取 id_rsa.pub 文件,拷贝其中的内容,登录Github,找到settings—>SSH and GPG keys—>New SSH key,将公钥粘贴到弹出的Key对话框中,并输入Title;然后单击Add SSH key ,完成SSH密钥添加,如下图所示。
 
 
最后,在Hexo服务器命令行界面可以验证一下:
| 1 | # ssh -T git@github.com | 
顺利的话可以看到下面的信息,第一次使用SSH连接Github,会提示你确认连接,输入yes即可。
The authenticity of host ‘github.com (52.74.223.119)’ can’t be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
RSA key fingerprint is MD5:16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘github.com,52.74.223.119’ (RSA) to the list of known hosts.
Hi Eddieeo! You’ve successfully authenticated, but GitHub does not provide shell access.
添加ssh密钥到Coding
在命令行用cat命令读取 id_rsa.pub 文件,拷贝其中的内容,登录Coding,找到个人设置—>SSH公钥—>新增公钥,将公钥粘贴到弹出的公钥内容对话框中,并输入公钥名称,修改公钥有效期;然后单击添加 ,完成SSH密钥添加,如下图所示。
 
 
最后,在Hexo服务器命令行界面可以验证一下:
| 1 | # ssh -T git@e.coding.net | 
顺利的话可以看到下面的信息,第一次使用SSH连接Coding,会提示你确认连接,输入yes即可。
The authenticity of host ‘e.coding.net (118.126.70.252)’ can’t be established.
RSA key fingerprint is SHA256:jok3FH7q5LJ6qvE7iPNehBgXRw51ErE77S0Dn+Vg/Ik.
RSA key fingerprint is MD5:98🆎2b:30:60:00:82:86:bb:85:db:87:22:c4:4f:b1.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘e.coding.net,118.126.70.252’ (RSA) to the list of known hosts.
Coding 提示: Hello eddieeo, You’ve connected to Coding.net via SSH. This is a personal key.
eddieeo,你好,你已经通过 SSH 协议认证 Coding.net 服务,这是一个个人公钥
部署到Github Pages
创建代码仓库
使用上面注册的用户登录Github官网,然后点击首页的 Start a project 按钮,创建一个公开的代码仓库,如下图所示,其中Repository name 一定要填写成 username.github.io,username就是你Github的登录用户名。

修改Hexo站点配置文件_config.yml
修改博客站点的配置文件_config.yml,将deploy的配置修改为如下:
| 1 | deploy: | 
生成静态页面
cd 到你的Hexo站点的初始化目录blog下,清除上次生成静态页面留下的缓存,执行如下命令:
| 1 | # hexo clean # 清除缓存 网页正常情况下可以忽略此条命令 | 
然后执行如下命令,生成静态页面至当前路径下的 public 目录。
| 1 | # hexo generate # 生成静态页,简写命令 hexo g | 
命令必须在 站点目录下执行,否则不成功,但是也不报错。
当你修改文章Tag或其他内容时,不能正确重新生成内容,可以删除hexo\db.json后重试,还不行就到public目录删除对应的文件,重新生成。
发布到Github Pages
前提:要想通过git部署,必须确保Hexo站点目录下有安装 hexo-deployer-git 插件,可以在Hexo站点目录下执行以下命令安装该插件
| 1 | # npm install hexo-deployer-git --save | 
然后cd 到你的Hexo站点的初始化目录blog下,执行如下命令进行发布
| 1 | # hexo deploy # 简写命令 hexo d | 
看到类似如下图所示的返回,即表示发布成功。

部署到Coding Pages
创建代码仓库
使用上面注册的用户登录Coding官网,然后点击首页的全部项目按钮,创建一个私有的项目,如下图所示,其中项目名称任意填写。
 
  
 
修改Hexo站点配置文件_config.yml
修改博客站点的配置文件_config.yml,将deploy的配置修改为如下:
| 1 | deploy: | 
生成静态页面
cd 到你的Hexo站点的初始化目录blog下,清除上次生成静态页面留下的缓存,执行如下命令:
| 1 | # hexo clean # 清除缓存 网页正常情况下可以忽略此条命令 | 
然后执行如下命令,生成静态页面至当前路径下的 public 目录。
| 1 | # hexo generate # 生成静态页,简写命令 hexo g | 
命令必须在 站点目录下执行,否则不成功,但是也不报错。
当你修改文章Tag或其他内容时,不能正确重新生成内容,可以删除hexo\db.json后重试,还不行就到public目录删除对应的文件,重新生成。
发布到Coding Pages
前提:要想通过git部署,必须确保Hexo站点目录下有安装 hexo-deployer-git 插件,可以在Hexo站点目录下执行以下命令安装该插件
| 1 | # npm install hexo-deployer-git --save | 
然后cd 到你的Hexo站点的初始化目录blog下,执行如下命令进行发布
| 1 | # hexo deploy # 简写命令 hexo d | 
看到类似如下图所示的返回,即表示发布成功。

开启静态网站
登录Coding网站,进入到blog项目,设置开启静态网站。
 
 
同时部署到Github Pages和Coding Pages
创建代码仓库
分别在Github Pages和Coding Pages新建好仓库和项目,此步骤可以参考前面的内容。
修改Hexo站点配置文件_config.yml
修改博客站点的配置文件_config.yml,将deploy的配置修改为如下:
| 1 | deploy: | 
生成静态页面
cd 到你的Hexo站点的初始化目录blog下,清除上次生成静态页面留下的缓存,执行如下命令:
| 1 | # hexo clean # 清除缓存 网页正常情况下可以忽略此条命令 | 
然后执行如下命令,生成静态页面至当前路径下的 public 目录。
| 1 | # hexo generate # 生成静态页,简写命令 hexo g | 
命令必须在 站点目录下执行,否则不成功,但是也不报错。
当你修改文章Tag或其他内容时,不能正确重新生成内容,可以删除hexo\db.json后重试,还不行就到public目录删除对应的文件,重新生成。
同时发布到Github Pages和Coding Pages
前提:要想通过git部署,必须确保Hexo站点目录下有安装 hexo-deployer-git 插件,可以在Hexo站点目录下执行以下命令安装该插件
| 1 | # npm install hexo-deployer-git --save | 
然后cd 到你的Hexo站点的初始化目录blog下,执行如下命令进行发布
| 1 | # hexo deploy # 简写命令 hexo d | 
看到类似如下图所示的返回,即表示发布成功。

Hexo 命令
常用命令:
| 1 | hexo new "postName" #新建文章 | 
常用复合命令:
| 1 | hexo deploy -g | 
简写:
| 1 | hexo n == hexo new | 
至此,基本操作介绍完毕,以下内容普通用户无需了解。
目录介绍
默认目录结构:
| 1 | . | 
- .deploy:执行 hexo deploy 命令部署到 GitHub 上的内容目录
- public:执行 hexo generate 命令,输出的静态网页内容目录
- scaffolds:layout 模板文件目录,其中的 md 文件可以添加编辑
- scripts:扩展脚本目录,这里可以自定义一些 javascript 脚本
- source:文章源码目录,该目录下的 markdown 和 html 文件均会被 hexo 处理。该页面对应 repo 的根目录,404 文件、favicon.ico 文件,CNAME 文件等都应该放这里,该目录下可新建页面目录。- _drafts:草稿文章
- _posts:发布文章
 
- themes:主题文件目录
- _config.yml:全局配置文件,大多数的设置都在这里
- package.json:应用程序数据,指明 hexo 的版本等信息,类似于一般软件中的关于按钮
接下来是重头戏_config.yml,做个简单说明:
| 1 | # Hexo Configuration | 
修改局部页面
页面展现的全部逻辑都在每个主题中控制,源代码在 站点目录/themes/你使用的主题/ 中,以 hexo-theme-pure 主题为例:
| 1 | . | 
更新
更新 hexo:
| 1 | # npm update -g hexo | 
更新主题:
| 1 | # cd 站点目录/themes/你的主题 | 
更新插件:
| 1 | # cd 站点目录/ | 
