文章目录
  1. 1. hexo 使用
  2. 2. 部署到自有VPS
    1. 2.0.1. 使用Rsync部署
    2. 2.0.2. 配置ssh免密码登陆
    3. 2.0.3. 使用Nginx配置hexo生成的静态文件服务器
    4. 2.0.4. 进行域名解析
    5. 2.0.5. 巧用 Git Hook

最近尝试了用hexo搭建博客, 真心强大, 之前使用Django的zinnia框架搭建过一个, 但写起博客来总是没那么方便的, 总是在各种折腾,违背了写博客的初衷。
对于我而已, 最理想的写博客方法应该是Markdown + Git, hexo可以很好的满足这一点。

hexo 使用

简介与指南可以看官方文档, 网上也是一搜索一堆教程,我就不赘述了。

部署到自有VPS

网上多数教程都是把hexo博客放在GitHub Pages的,但我个人觉得把代码直接放在Github上面有点奇怪的感觉(虽然不会有什么人去看)。
而且貌似Github Pages偶尔会被墙,不是特别稳定。

最终我的选择是 Bitbucket + VPS部署。

  • 注1: Bitbucket, 也是Git仓库,提供免费的私有仓库功能,而Github的私有功能需要收费。
  • 注2: VPS(虚拟专用服务器)。我的VPS的购买Vultr的日本节点,速度不错。有兴趣购买的可以使用此推荐链接购买

如果你已经看过官方文档或者一些教程,就知道hexo提供了很方便的生产静态博文内容并且直接部署的方法。

一般写博客到发布的流程是这样的

1
hexo new "postName" #新建文章
hexo server #开启预览访问端口(默认端口4000,'ctrl + c'关闭server)
hexo generate #生成静态页面至public目录
hexo deploy #将.deploy目录部署到GitHub

如果是将静态内容发布到自有的VPS, 需要修改hexo的部署方式

使用Rsync部署

我所选择的部署方式是Rsync, 需要的修改如下:

安装 hexo-deployer-rsync

1
$ npm install hexo-deployer-rsync --save

修改配置(_config.yml)。

1
deploy:
  type: rsync
  host: <host> ## 远程主机的地址
  user: <user> ## 主机用户名 
  root: <root> ## 静态内容文件路径
  port: [port] ## 端口 默认22
  delete: [true|false] ## 是否删除远程主机的旧文件 默认true
  verbose: [true|false]  ## 显示调试信息 默认true
  ignore_errors: [true|false] ## 忽略错误 默认false

配置ssh免密码登陆

没有ssh免密码登陆的话, 每次hexo deploy都是输入服务器密码

简要来讲,就是将你个人电脑的 ~/.ssh/id_rsa.pub 追加到服务器的 ~/.ssh/authorized_keys

具体配置可参看此链接

配置完成后,在你的hexo工程执行 hexo deploy, 然后登陆VPS查看文件是否同步成功

使用Nginx配置hexo生成的静态文件服务器

安装Nginx教程自行搜索

创建nginx配置文件

1
$ sudo vim /etc/nginx/sites-enabled/hexo.conf

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
server {
listen 80;
server_name yourhost.com;

rewrite_log on;
charset utf8;

access_log /yourlogpath/nginx/yourhost.com.access.log ;
error_log /yourlogpath/nginx/yourhost.com.error.log notice;

root /home/yourpath/hexo-blog; # rsync对应文件路径
index index.html;

location ~* ^.+.(jpg|jpeg|gif|png|ico|rar|swf)$ {
access_log off;
expires 999h;
add_header Cache-Control public;
}

location ~* ^.+.(css|js)$ {
access_log off;
expires 1h;
add_header Cache-Control public;
}
}
1
$ sudo nginx -t
$ sudo nginx -s reload

进行域名解析

巧用 Git Hook

经过以上步骤,应该可以完成 hexo部署至VPS的流程了。

在实际使用hexo的过程中,发现因为部署行为比较方便,有时候容易忘记进行版本控制
利用GitHook, 可实现commit后自动进行 hexo generatehexo deploy

创建 ./.git/hooks/post-commit (参考hooks目录下sample文件, 权限为774)

1
vim .git/hooks/post-commit
1
2
3
4
#!/bin/sh

hexo generate
hexo deploy

使用了Githook之后,写博客流程如下, 自动地更新了线上博客,也不会忘记版本记录

1
hexo new "postName" #新建文章
hexo server #开启预览访问端口(默认端口4000,'ctrl + c'关闭server)
# 预览ok
git commit -am "xxxxx" 
git push
文章目录
  1. 1. hexo 使用
  2. 2. 部署到自有VPS
    1. 2.0.1. 使用Rsync部署
    2. 2.0.2. 配置ssh免密码登陆
    3. 2.0.3. 使用Nginx配置hexo生成的静态文件服务器
    4. 2.0.4. 进行域名解析
    5. 2.0.5. 巧用 Git Hook