云服务器搭建hexo博客,git hooks自动更新

因为自己喜欢瞎拍一些东西,希望弄个博客记录记录,原以为就在eiblog的基础上添加相册栏目,自定义一些东西,但自己的前端知识几乎为0,行动起来,需要点时间。看到hexo上有很多适合的主题,决定用hexo搭建一个,通过git hooks就可线下推送,线上自动拉取部署。

其原理是:通过本地渲染静态文件,将文件推送到GitHub仓库,在服务器上再通过git-hooks同步网站根目录。这样就完成了线下一次操作,线上自动更新的步骤。

废话不多说,看操作。

配置云服务器

在配置云服务器前,你得首先本地搭建好你的hexo博客,并可以通过hexo d部署到GitHub。

其步骤很多博客都有详细的描叙,不做累述。

1.安装nginx

屈屈的博客中很多关于Nginx的按照,配置,你可以看看。

在安装完成后你可以在配置中单独指定一个配置,或直接修改原配置指向你准备存放静态文件的文件夹。我用的前者。在nginx.conf文件添加指定配置文件路径,

1
include            /data/hexo/nginx/cong.d/*.conf;

/data/hexo/nginx/cong.d/ 下添加配置文件razeencheng.com.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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
server {
listen 443;

server_name razeencheng.com;
server_tokens off;

access_log /data/hexo/nginx/logdata/nginx.log;

# ip 黑名单
include /data/hexo/nginx/ip.blacklist;

ssl_ct on;

# 中间证书 + 根证书
ssl_trusted_certificate /data/hexo/nginx/ssl/razeencheng.com.pem;

ssl_certificate /data/hexo/nginx/ssl/razeencheng.com.pem;
ssl_certificate_key /data/hexo/nginx/ssl/razeencheng.com.key;
ssl_ct_static_scts /data/hexo/nginx/ssl/scts/ecc/;

ssl_dhparam /data/hexo/nginx/ssl/dhparams.pem;

ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
ssl_session_tickets on;

# ssl stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 114.114.114.114 8.8.8.8 valid=300s;
resolver_timeout 10s;

if ($request_method !~ ^(GET|HEAD|POST|OPTIONS)$ ) {
return 444;
}

location / {
root /data/hexo/nginx/html;
index index.html;
}
}

从配置文件也可看出,我将网站的根目录放在/data/hexo/nginx/html文件夹。

2.安装node.js

1
$ yum install nodejs -y

3.安装git

1
$ yum install git -y

4. 配置git hook

1
2
3
4
5
6
# 博客public存放地址
$ mkdir /www/blog
# 新建git仓库地址,初始化一个空仓库
$ mkdir /hexo.git
$ cd /hexo.git
$ git init --bare

配置git hook

1
2
3
$ cd hooks
$ touch post-receive
$ vi post-receive

添加以下内容。

1
2
3
4
#!/bin/sh 
WWW=/www/blog # 表示实际文件被存放的位置
GIT_REPO=/hexo.git # 表示仓库所在的位置
git --work-tree=${www} --git-dir=${GIT_REPO} checkout -f

这样将git仓库与文件隔离,互不影响。

最后赋予文件可执行权限。

1
$ chmod +x post-receive

到这服务器就配置好了。

本地配置

修改_config.ymldeploy内容,例如:

1
2
3
4
deploy:
type: git
repository: [email protected]_site_ip:/hexo.git
branch: master

如果你的ssh设置了免密登陆(点这里看怎么设置免密登陆)你就可以这么写:

1
2
3
4
deploy:
type: git
repository: blog:/hexo.git
branch: master

我的.ssh/config这么配置的。

1
2
3
4
5
Host blog
HostName 120.78.181.210
User root
IdentityFile ~/.ssh/blog.pem
#Port 22

以后正常的hexo d既可以一键部署。

之后,可以看看我的效果~

Razeen wechat
follow me on wechat.