利用GitHook持续部署Hexo博客

Hexo博客是一款基于Node.js的静态博客框架。

安装Hexo

首先确保本地已经安装Node.js

安装并创建hexo博客

1
2
3
4
5
cd ~
npm install hexo-cli -g
hexo init blog
cd blog
npm install

安装发布插件

1
npm install hexo-deployer-git --save

服务器创建静态博客存储Git仓库

示例服务器环境:

  • Centos 6.8
  • Git 1.7.1

创建git用户

1
sudo useradd git

创建仓库并附权限

1
2
sudo git init --bare /home/git/hexo-server.git
sudo chown -R git:git /home/git/hexo-server.git

给git用户附sudo权限

1
visudo

在文件最后一行加上

1
git ALL=(ALL) NOPASSWD: ALL

给root用户创建ssh-key

1
2
sudo mkdir ~/.ssh
sudo ssh-keygen

给git用户创建ssh-key

1
2
3
4
sudo mkdir /home/git/.ssh
su git
cd ~
ssh-keygen

多用户免密使用Git

将多用户的ssh-key添加到服务器git用户的authorized_keys

本地:

1
cat ~/.ssh/id_rsa.pub | ssh root@your_host "cat - >> /home/git/.ssh/authorized_keys"

服务器:

1
2
cat ~/.ssh/id_rsa.pub >> /home/git/.ssh/authorized_keys
cat /home/git/.ssh/id_rsa.pub >> /home/git/.ssh/authorized_keys

创建GitHook

1
2
cd /home/git/hexo-server.git/hooks
vim post-receive

创建 post-receive

1
2
3
4
#!/bin/sh
cd /var/www/hexo-server
unset GIT_DIR
sudo git pull origin master

附权限:

1
chmod +x post-receive

服务器克隆部署仓库

1
2
3
cd /var/www
su git
sudo git clone git@localhost:/home/git/hexo-server.git

nginx配置(https协议):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
server {
listen 443 ssl http2;

server_name your_host;
server_tokens off;

ssl_certificate /var/www/ssl/chained.pem;
ssl_dhparam /var/www/ssl/dhparams.pem;

location / {
root /var/www/hexo-server/;
index index.html index.htm;
}
}

server {
listen 80;
server_name your_host;

return 301 https://$host$request_uri;
}

本地Hexo配置远程部署仓库

1
2
cd ~/blog
vim _config.yml

修改 _config.yml :

1
2
3
4
deploy:
type: git
repository: git@your_host:/home/git/hexo-server.git
branch: master

发布博客

1
hexo generate && hexo deploy

至此可以在实现本地一键发布Hexo博客在私有的服务器了。

文章作者: 陈高勋
文章链接: https://nmchgx.com/githook-for-hexo-deployment/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 陈高勋的博客