0%

博客配置

上半年来用云服务器搭了一些小应用,不知不觉发现可以比较完整地做一些东西了。顺手用 NginX 和 Hexo 配置了这个博客,版本控制放在 Github 上。

NginX 的配置

Hexo 似乎是需要每次写完重新生成静态文件再部署,感觉稍微有些麻烦。如果用 hexo server 命令则可以动态看到博客内容的更新,所以为了省事把 NginX 连到 Hexo 的端口,直接在后台运行 hexo s 就可以看到博客了。

1
2
3
4
5
6
7
8
9
10
server {
listen 80;
server_name blog.amomorning.com;
location / {
proxy_pass http://127.0.0.1:4000;
}
location /webhook {
proxy_pass http://127.0.0.1:40067;
}
}

pm2 监控博客服务器进程

为了服务器能稳定运行,用 pm2 守护进程监控服务,在服务挂掉的时候能自动重启。直接挂在后台倒也没有占用多少CPU内存。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// hexo-auto.js
var spawn = require('child_process').spawn;

free = spawn('hexo', ['server', '-p 4000']);/* 其实就是等于执行hexo server -p 4000*/

free.stdout.on('data', function (data) {
console.log('standard output:\n' + data);
});

free.stderr.on('data', function (data) {
console.log('standard error output:\n' + data);
});

free.on('exit', function (code, signal) {
console.log('child process eixt ,exit:' + code);
});

用pm2运行该代码:

1
pm2 start hexo-auto.js

Webhook 侦听 git push

将博客内容放在 GitHub 的代码仓库之后,就可以在不同设备上写博客啦(希望真的会有更新哈哈哈
因为懒于每次写完博客要连接服务器,就在 GitHub 设置里的 Webhook 功能,服务器收到代码仓库更新后能自动 git pull,更新博客内容。

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
// webhook.js
var http = require('http')
var createHandler = require('github-webhook-handler')
var handler = createHandler({path: '/webhook', secret: 'your webhook secret'})
const {exec} = require('child_process') // 执行本地命令

http.createServer(function(req, res) {
handler(req, res, function(err) {
res.statusCode = 404
res.end('no such location')
})
}).listen('40067')

handler.on('error', function(err) {
console.error('Error:', err.message)
})

handler.on('push', function(event) {
console.log('Received a push event for %s to %s',
event.payload.repository.name,
event.payload.ref)
exec('cd /your/blog/dir && git pull', (err, stdout, stderr) => {
if (err) {
console.log(err)
}
else {
console.log('updated success')
}
})
})

同样用pm2运行该代码:

1
pm2 start webhook.js

做得很方便用的样子,就是不知道博客里放点什么好呢 >w<