hexo配置

VPS自动发布Blog

前文部署到VPS后无法正常工作,而利用git hooks可以解决自动布置的问题。在VPS仓接收receive到同步后,自动将文件同步到Web目录。

blog.git/hooks/post-receive
1
2
#!/bin/bash
git --work-tree=/wwwroot/notes.guoliangwu.com --git-dir=/xxx/xxx/blog.git checkout -f

配置Nginx

1
2
3
4
5
6
7
8
9
10
11
12
13
server {
listen 80;
listen [::]:80;

root /wwwroot/notes.guoliangwu.com;
index index.html index.htm;

server_name notes.guoliangwu.com;

location / {
try_files $uri $uri/ /index.html;
}
}

Nginx这里可以将本地一些静态文件css,js,jpeg等文件进行缓存。可参考官方说明

同步hexo

前文说明了如何Deploy到不同的站点,但此时只是Hexo生成的文件,Hexo的配置文件什么的都没有同步到git仓中。所以还要创建另外一个仓用来存放Hexo的配置文件。

分别在Coding.netGithubVPSgit init --bare <folder>建好仓,在Hexo目录下也建好仓,然后在Hexo的本地仓内增加三个仓的配置。

1
2
3
4
5
6
git remote add origin ssh://git@github.com/username/hexo.git
git remote add origin ssh://git@git.coding.net/username/hexo.git
git remote add origin ssh://username@guoliangwu.com/xxx/xxx.git

# 检查配置是否成功
git remote -v

这样正常的git push后就可以将Hexo的配置文件同步到三个站点。

配置ssh客户端

使用SSH key中配置了各服务端的public key,这样可以使用同一个key登录到不同的服务器。但如果在同一个客户端使用不同的key登录到不同的服务器呢?这样就需要简单配置一下,参考了下这篇文章,具体细节可以看Manual

~/.ssh/config
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Host guoliangwu.com
IdentityFile ~/.ssh/id_rsa.git
Port 22
User git

Host guoliangwu.com
IdentityFile ~/.ssh/id_rsa.xxx
Port 22
User username

Host github.com
IdentityFile ~/.ssh/id_rsa.git
Port 22
User git

Host git.coding.net
IdentityFile ~/.ssh/id_rsa.git
Port 22
User git

当然在Server端需要用到多key验证的话,直接将public key加到authorized_keys就好。

1
cat id_rsa.pub >> ~/.ssh/authorized_keys