hexo 博客的安装部署和主题配置

一、本地安装 hexo

初始化安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# hexo 依赖 nodejs,自动部署依赖 git
npm install -g hexo-cli
# 初始化目录,blog 这个名字不是关键字,可以是任何你喜欢的名称
hexo init blog
# 安装依赖
cd blog && npm install
# 安装 next 主题和搜索功能。next 不仅仅是一个主题,还自带了很多插件,可以通过配置文件,简单地开关一个插件
npm install hexo-theme-next hexo-generator-searchdb --save

# 编辑配置文件,将 theme 的值改为 next,修改默认语言和 url,url 如果不配置,就没有办法使用统计插件
vim _config.yml
language: zh-CN
theme: next
url: https://<your_website>.com
new_post_name: :year-:month-:day-:title.md

# 配置主题,复制主题默认配置文件到博客目录下,配置项目不多,快速浏览一遍
cp node_modules/hexo-theme-next/_config.yml _config.next.yml

# 启用搜索功能
vim _config.yml
search:
path: search.xml
field: post
format: html
limit: 1000

vim _config.next.yml
local_search:
enable: true

# 启动服务器,可以缩写为 hexo s。hexo deploy 可以写成 hexo d
hexo server

部署已有 hexo

1
2
3
4
5
# 安装 hexo 后下载 github 上的代码就可以了
npm install -g hexo-cli
git clone git@github.com:wanglongbiao/blog.git
cd blog && npm i
hexo server

二、发布到 服务器

通过在服务器上配置一个 git 服务器,实现自动部署。

服务器端设置

服务器可以使用 nginx,也可以使用宝塔面板。宝塔比较方便。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 先添加一个 git 用户,并设置密码
useradd git && passwd git
# 创建一个目录,并将修改所有权限为 git
mkdir /var/www/hexo
chown -R git:git /var/www/hexo
# 创建一个空的 git 仓库,用来让 hexo 推送
su git && cd
git init --bare blog.git
# 编辑 git 钩子,使得 hexo 每次在本地提交后,就更新文件
vim blog.git/hooks/post-receive
#!/bin/sh
git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f

# 添加执行权限
chmod +x blog.git/hooks/post-receive

本地配置

1
2
3
4
5
6
7
8
9
10
11
12
13
# 首先安装 deployer
cd blog
npm install hexo-deployer-git -g
# 编辑 _config.yml,在最后配置 deployer
deploy:
type: git
repo: git@x.x.x.x:blog.git

# 为了避免每次部署都要输入密码,将本机公钥复制到服务器上
ssh-copy-id git@x.x.x.x

# 部署
hexo deploy --generate

顺利的话,到这里就完成了。

遇到的问题

1
2
3
4
5
6
7
8
9
10
11
12
13
问题:更换默认主题后,执行 `hexo server` 时报错  err: Error [ERR_STREAM_DESTROYED]: Cannot call write after a stream was destroyed
解决:npm install hexo-renderer-pug hexo-renderer-stylus

问题:Authentication refused: bad ownership or modes for file
解决:删除 authorized_keys,重新 ssh-copy-id

问题:服务器的端口不是 22
解决:vim ~/.ssh/config,在这个文件中配置端口
Host x.x.x.x
Port yyyy

# 如果启动有问题,安装以下类库
npm install hexo-renderer-pug hexo-renderer-stylus