写在之前:

Hexo 是一个用来搭建静态博客的 blog framework,不需要连接数据库;
Hexo 使用 Markdown 来解析文章,方便写作;
Hexo 有很多炫丽的主题并且可以定制。

操作步骤

VPS端

  • Node.js 安装
  • git 配置
  • 域名配置

本地

  • hexo 安装与配置
  • hexo 优化和美化

Node.js 安装

首先进入自己服务器:

1
2
ssh arya@*** -p 8000
paasword:

安装方法:

1
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.28.0/install.sh | bash

或者

1
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.28.0/install.sh | bash

然后:

注意安装完成之后,请重启 terminal

nvm install stable 然后这时在控制台打印 node -v,如果看到版本信息,就说明安装成功了。

下次在新的控制台再次使用node.js,需要如下操作:

1
nvm use stable

git 安装与配置

安装 git

1
sudo apt-get install git

创建一个新用户 git,用来运行 git 服务:

1
sudo adduser git

生成公钥:

1
ssh-keygen -t rsa -b 4096 -C "pennybear0822@gmail.com"

将本地的 public key 复制到 authorized_keys 中,本地文件存储在 id_rsa.pub 中:

1
2
3
cd .ssh
ls
vim authorized_keys

初始化 Git 仓库,将其放在 /var/repo/blog.git 目录下:

1
2
3
$ sudo mkdir /var/repo
$ cd /var/repo
$ sudo git init --bare blog.git

配置 git hooks

使用 post-receive 的 hook,这个 hook 会在整个 git 操作过程完结以后被运行。

在 blog.git/hooks 目录下新建一个 post-receive 文件:

1
2
$ cd /var/repo/blog.git/hooks
$ vim post-receive

在 post-receive 文件中写入如下内容:

1
2
#!/bin/sh
git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f

注意,/var/www/hexo 要换成你自己的部署目录,一般可能都是 /var/www/html。上面那句 git 命令可以在我们每次 push 完之后,把部署目录更新到博客的最新生成状态。这样便可以完成达到自动部署的目的了。

不要忘记设置这个文件的可执行权限:

1
chmod +x post-receive

改变 blog.git 目录的拥有者为 git 用户:

1
$ sudo chown -R git:git blog.git

禁用 git 用户的 shell 登录权限:

出于安全考虑,我们要让 git 用户不能通过 shell 登录。可以编辑 /etc/passwd 来实现,在 /etc/passwd 中找到类似下面的一行:

1
git:x:1001:1001:,,,:/home/git:/bin/bash

改为:

1
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

本地配置

修改 hexo 目录下的 _config.yml 文件,找到 [deploy] 条目,并修改为:

1
2
3
4
deploy:
type: git
repo: ssh://git@www.swiftyper.com:/var/repo/blog.git
branch: master

要注意切换成你自己的服务器地址,以及服务器端 git 仓库的目录。

本地配置就是如此地简单。至此,我们的 hexo 自动部署已经全部配置好了。

部署

本地 Terminal 执行命令:

1
$ hexo clean && hexo generate --deploy

参考资料

使用 Git Hook 自动部署 Hexo 到个人 VPS