版权声明:本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出 原文链接 如有问题, 可发送邮件咨询. https://blog.csdn.net/weixin_37865166/article/details/89431971
➢ gitbook
更新问题
使用gitbook
上传到github pages
设置上传即更新
然而github
只有公共库可以设置pages
,私人仓库是不可以设置的.
➢ 云服务器部署
更新gitbook
到github
后,仍然需要手动更新一次云服务器git
使用ssh
远程到云服务器,不仅繁琐,还容易出错(项目比较多的话)
➢ 两种更新方案
有一种方案是github
利用webhook
实现push
时项目自动部署
另一种方案是在node
中使用shell
脚本(这里采用访问某特定API
的形式)
➢ shell
脚本
文件名test.sh
更新git
仓库
#!/bin/sh
git pull
➢ node
执行系统命令
在node
中设置子进程执行系统命令
以下是express+node
当访问/shell api
的时候,执行shell
脚本
// api设置
router.get(`/shell`, function(req, res) {
// 子进程
var exec = require("child_process").exec;
//需要执行的命令字符串
var cli = "sh ./shell/test.sh";
// 执行命令
exec(cli, { encoding: "utf8" }, function(err, stdout, stderr) {
// 如果抛出错误
if (err) {
console.log(`err`, err);
// 返回结果
res.send({
code: -1,
data: `一些错误`,
msg: err
});
return;
}
// 如果没有错误,则执行命令成功
console.log("stdout >>>>>>>>>>>>> " + stdout);
console.log("stderr >>>>>>>>>>>>> " + stderr);
// 返回结果
res.send({
code: 0,
data: `更新成功`,
msg: `
${stdout}
>>>>>
${stderr}
`
});
});
});
➢ Tips
由于使用express+node
返回静态Html,
所以shell只是拉去最新的静态资源,网站就会更新.
如果设置到服务端的修改,那么还要加上pm2
等指令,比如pm2 restart server.js
前置条件:linux
服务器上设置了git
令牌,不需要通过https
或者ssh
密码的形式pull