1.首先安装wget
yum install -y wget
如果已经安装了可以跳过该步
2.下载nodejs最新的bin包
可以在下载页面
wget https://nodejs.org/dist/v9.3.0/node-v9.3.0-linux-x64.tar.xz
然后就是等着下载完毕。
另外你也可以在你喜欢的任意系统上下载最新的bin包,然后通过FTP上传到CentOS上。
3.解压包
依次执行
xz -d node-v9.3.0-linux-x64.tar.xz
tar -xf node-v9.3.0-linux-x64.tar
4.部署bin文件
先确认你nodejs的路径,我这里的路径为~/node-v9.3.0-linux-x64/bin。确认后依次执行
ln -s ~/node-v9.3.0-linux-x64/bin/node /usr/bin/node
ln -s ~/node-v9.3.0-linux-x64/bin/npm /usr/bin/npm
注意ln指令用于创建关联(类似与Windows的快捷方式)必须给全路径,否则可能关联错误。
5.测试
node -v
npm
如果正确输出版本号,则部署OK
这种安装的方法好处是比较干净,安装也比较快速。个人认为比较适合新手。但是如果遇到nodejs插件全局安装时,需要自行去创建关联。
这也是后面出问题的原因,当时没注意。
在安装目录(以我的为例/webhook)下执行如下命令
npm init -f
npm i -S github-webhook-handler
npm i pm2 -g
由于需要使用pm2命令进行进程守护,需要添加关联我之前忽略了这一步导致出现-bash: pm2: command not found
报错。
执行如下命令即可添加
ln -s pm2 安装路径 系统环境路径$PATH
echo $PATH 即可查询系统环境路径例如/usr/local/sbin
在服务器目录下创建webhook web两个文件夹备用,在webhook目录下新建webhook.js文件我使用vim webhook.js 创建并编辑写入以下内容:
javascript
var http = require('http')
var createHandler = require('github-webhook-handler')
var handler = createHandler({ path: '/', secret: 'secret' })
// 上面的 secret 保持和 GitHub 后台设置的一致文章后面会提到。
function run_cmd(cmd, args, callback) {
var spawn = require('child_process').spawn;
var child = spawn(cmd, args);
var resp = "";
child.stdout.on('data', function(buffer) { resp += buffer.toString(); });
child.stdout.on('end', function() { callback (resp) });
}
http.createServer(function (req, res) {
handler(req, res, function (err) {
res.statusCode = 200
res.end('gggggggggg')
})
}).listen(7777)
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);
run_cmd('sh', ['./deploy.sh',event.payload.repository.name], function(text){ console.log(text) });
})
secret
字段为 Github 中设置的,需要与这里相对应
注意,在运行的时候如果提示
github-webhook-handler is not defined
未找到 ,可以在目录中执行npm link github-webhook-handler
cd /web通过 git clone git page命令下载文件同时完成git 初始化。
然后在webhook目录下创建deploy.sh写入以下内容
shell
#!/bin/bash
#网站的根目录,用自己的目录。
WEB_PATH='/web/brqs.github.io'
echo "start deployment"
cd $WEB_PATH
echo "fetching from remote..."
#为了避免冲突,强制更新本地文件
git fetch --all
git reset --hard origin/master
echo "done"
由于 Linux 文件权限问题,可能无法执行,建议先执行
chmod 777 ./deploy.sh
运行webhook.js
pm2 start webhook.js
进入需要自动部署的项目的github地址添加webhook,进入Settings设置页面,点击左侧的 Webhooks
按图中填写即可,你自己的服务器ip加端口(记得云服务器开放安全组狗头),secret是创建时自己填写的。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。