没什么好说的,有基础的步骤都能看懂,不懂的我也一时说不清楚,所以直接给出步骤吧,注意几个地方即可
环境设置
安装nvm
1
| curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
|
环境变量
1 2 3
| export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
|
安装node
安装nrm
切换源
安装pm2
安装node-webhooks包(这里你需要先初始化一个npm项目,然后后面的代码文件也是放到这里)
1
| npm i -S github-webhook-handler
|
代码文件
代码文件的作用就是处理github发出的webhook请求,你就可以知道有人上传到git了,只需要拉取到本地即可,语言其实不限,只是这个node的包管理确实是方便一些就采用了node
webhooks.js
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
| var http = require('http'); var spawn = require('child_process').spawn; var createHandler = require('github-webhook-handler');
var handler = createHandler({ path: '/webhook', secret: 'yoursecret' });
http.createServer(function (req, res) { handler(req, res, function (err) { res.statusCode = 404; res.end('no such location'); }) }).listen(6666);
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);
runCommand('sh', ['./deploy.sh'], function( txt ){ console.log(txt); }); });
function runCommand( cmd, args, callback ){ var child = spawn( cmd, args ); var resp = 'Deploy OK'; child.stdout.on('data', function( buffer ){ resp += buffer.toString(); }); child.stdout.on('end', function(){ callback( resp ) }); }
|
deploy.sh(这个你也可以直接写在上面的代码文件中,通过command来调用,这里写出shell方便管理吧)
1 2 3 4 5 6
| #!/bin/bash
output="/web/blog" cd $output git pull
|
服务器站点配置
创建目录 /web/blog (就是你的博客目录了)
1
| git clone https://github.com/xemxx/xemxx.github.io.git blog
|
pm2启动监听(就是webhooks服务)
nginx 配置(就可以配置你的域名和端口了)
1 2 3 4 5 6 7 8 9
| server { listen 80; server_name blog.com; root /web/blog; index index.html; location ^~/webhook{ proxy_pass http://127.0.0.1:6666; } }
|
github设置
这个图你看不懂我就没办法了,,,