首页IT科技如何组建ap网络(一文教会你如何在内网搭建一套属于自己小组的在线 API 文档?)

如何组建ap网络(一文教会你如何在内网搭建一套属于自己小组的在线 API 文档?)

时间2025-06-15 01:54:31分类IT科技浏览5019
导读:Hello,大家好,我是阿粉,对接文档是每个开发人员不可避免都要写的,友好的文档可以大大的提升工作效率。...

Hello              ,大家好                    ,我是阿粉       ,对接文档是每个开发人员不可避免都要写的              ,友好的文档可以大大的提升工作效率              。

阿粉最近将项目的文档基于 Gitbook 和 Gitlab 的 Webhook 功能的在内网部署了一套实时的                    ,使用起来特方便了                    。跟着阿粉的步骤       ,教你部署自己的文档服务       。

步骤

安装 Node 和 NPM; 安装 git       , gitbook                    ,gitbook-cli; 配置 Gitlab Webhook; 创建 Webhook 监听服务; 编辑文档检查实时更新;

安装 Node             ,NPM

第一步我们先安装 Node 和 NPM       ,

# 下载压缩包 wget https://nodejs.org/dist/v9.10.1/node-v9.10.1-linux-x64.tar.gz # 解压 tar xzvf node-v9.10.1-linux-x64.tar.gz # 重命名 mv node-v9.10.1-linux-x64 node # 移动到/usr/local/ 目录下 mv node* /usr/local/ # 创建软连接 ln -s /usr/local/node/bin/* /usr/sbin/ # 检查版本 node -v # 正常输出                     ,下面内容说明安装成功 > v9.10.1

正常安装完 Node 过后 NPM 会自动安装             ,通过npm -v 可以看到 NPM 的版本号              。

Gitbook

Git 的安装阿粉就不演示了,给大家演示安装 Gitbook                     ,依次执行下面的命令                    。

# 安装 Gitbook npm install -g gitbook # 安装 Gitbook 命令行工具 npm install -g gitbook-cli # 创建软连接 ln -s /usr/local/node/bin/gitbook /usr/sbin/gitbook # 查看 Gitbook 版本 注意大写的 V gitbook -V

安装完 Gitbook 过后                    ,我们这个时候就可以部署服务了,我们先创建一个空文件夹 test-doc              ,然后进入文件夹执行gitbook init 命令                    ,执行成功过后       ,我们可以看到生成了两个文件              ,分别是 README.md 以及 SUMMARY.md 文件       。

[root@~]# mkdir test-doc [root@~]# cd test-doc/ [root@test-doc]# gitbook init warn: no summary file in this book info: create README.md info: create SUMMARY.md info: initialization is finished [root@test-doc]# ll 总用量 8 -rw-r--r--. 1 root root 16 126 19:15 README.md -rw-r--r--. 1 root root 40 126 19:15 SUMMARY.md

创建完成过后                    ,我们在 test-doc 目录下执行命令 gitbook serve 可以看到如下日志内容

我们访问服务器的 4000 端口       ,正常可以看到如下页面       。

如果没有看到上面的内容或者访问不了 4000 端口       ,我们需要检查一下服务器的防火墙                    ,先看下防火墙开放的端口             ,执行命令 firewall-cmd --list-ports 看看是否开放了 4000 端口       ,如果没有执行下面命令 firewall-cmd --zone=public --add-port=4000/tcp --permanent 将 4000 端口进行开放                     ,然后重新 reload             ,firewall-cmd --reload ,再次刷新浏览器即可                    。

后面的操作就是在文档中增加相应的内容即可                     ,当然这里模拟的是本地创建文件夹                    ,如果我们的文档已经存在仓库中,我们可以通过 git 将仓库拉下来              ,增加 README.md 和 SUMMARY.md 文件                    ,然后编写相应内容即可       ,只需要在 SUMMARY.md 中增加相应的目录              ,同样启动就能访问             。

Gitlab Webhook

截止到上面的内容我们已经部署了一套在线的文档服务                    ,但是有个比较麻烦的事情       ,就是每次文档有所更新的时候       ,我们在修改完文档                    ,推送到 Gitlab 仓库后             ,都需要手动登录服务器       ,然后重新 git pull 拉取最新的文档                     ,接着重启 gitbook serve 服务             ,难免会觉得比较麻烦       。

好在 Gitlab 提供 Webhook 功能(GitHub 也一样提供),我们可以在 Gitlab 对应的仓库中配置 Webhook功能                     。Webhook 我们可以理解为钩子功能                     ,允许我们在对仓库进行改动过后可以触发一个我们指定的服务                    ,然后执行相应的动作             。

比如我们这里想要的效果就是,在每次更新文档 push 的仓库过后              ,希望部署的在线文档服务能自动拉取最新的文档信息                    ,然后自动重启 gitbook 服务       ,实现文档的及时更新。

实现上面的需求              ,我们需要两步                    ,第一步在 Gitlab 对应的仓库里面设置 Webhook        ,也就是每次执行 push 动作后需要调用的服务地址;第二步我们需要一个服务       ,这个服务需要提供一个接口                    ,当被调用的时候执行拉取最新文档和重启 gitbook 服务的功能                     。

为了方便我们可以把拉取最新文档和重启 gitbook 服务的功能写成一个 shell 脚本             ,当接口被调用的时候       ,我们只需要执行 shell 脚本即可                    。

配置 Webhook

找到仓库的设置                     ,不同版本的 Gitlab 可以页面显示不一样             ,大家自行找一找就好,

点进去过后我们看到如下页面                     ,需要填写服务的地址                    ,这里我们服务还没有创建,不过我们可以先进行定义              ,比如阿粉这里就填了 http://xxxx:6666/autobuild                    ,服务器的地址就填写安装了 Gitbook 的服务器;在 Secret Token 一栏我们设置一个秘钥       ,接口到时候也需要填写              ,只要对应上就行                    ,比如 autobuild。

第三个是下面的 Trigger       ,这里默认选择的是 Push events       ,我们不用改                    ,如果需要其他的也可以设置              。

再点击下面的Add webhook 按钮保存即可                    。

部署接口服务

我们在刚刚部署了 gitbook 的服务器上面创建一个名为 webhook 的文件夹             ,在文件夹里面我们创建三个文件       ,分别是 index.js                     ,package.json             ,auto_build.sh

index.js 内容如下:这里我们的接口名字和 secret需要跟在 Gitlab 上面配置的一样

var http = require(http); var spawn = require(child_process).spawn; # 导入 Gitlab 的 webhook var createHandler = require(gitlab-webhook-handler); var handler = createHandler({ path: /autobuild, secret: autobuild }); http.createServer(function (req, res) { handler(req, res, function (err) { res.statusCode = 404; res.end(no such locationsssssssss); }); }).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, [/root/webhook/auto_build.sh], function( txt ){ console.log(txt); }); }); function runCommand( cmd, args, callback ){ var child = spawn( cmd, args ); var response = ; child.stdout.on(data, function( buffer ){ response += buffer.toString(); }); child.stdout.on(end, function(){ callback( response ) }); child.stderr.on(data, (data) => { console.log(`stderr: ${data}`); }); }

简单介绍一下上面的 JS 代码,创建一个服务监听 6666 端口                     ,提供一个名叫 autobuild 的接口                    ,在收到 push 操作的时候就执行/root/webhook/auto_build.sh 路径下的脚本       。

auto_build.sh 脚本的内容如下:

#! /bin/bash SITE_PATH=/root/test-doc #USER=admin #USERGROUP=admin cd $SITE_PATH #git reset --hard origin/master #git clean -f git pull # 切换到 dev 分支,可以自己设定 git checkout dev # 启动 gitbook nohup gitbook serve > /dev/null 2>&1 & #chown -R $USER:$USERGROUP $SITE_PATH

脚本里面主要就是拉取这新的内容              ,然后切换到 dev 分支                    ,再执行gitbook serve 命令       ,采用的是nohup gitbook serve > /dev/null 2>&1 &

package.json的内容如下:

{ "name": "autobuild", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "gitlab-webhook-handler": "1.0.1" } }

启动服务器之前              ,先执行npm install 安装依赖                    ,然后执行nohup node index.js &       ,启动成功过后我们就可以进行文档修改然后 push 到Gitlab 上面       ,观察是否及时更新              。这里注意一个点                    ,我们的脚本里面使用的是 dev 分支             ,所以要 push 到 dev 分支                    。

我们可以在 Gitlab 的 Webhook 下面看到我们 push 过后触发的详情       ,可以看到是否成功       。这里如果不成功                     ,我们再检查下防火墙是否开启了 6666 端口             ,没有的话,按照上面的操作开启即可       。

到这里我们整个基于 Gitbook 和 Gitlab Webhook 实现文档实时更新的效果就达成了                     ,后续在使用的时候                    ,我们只需要修改内容,然后 push 到对应的仓库              ,然后在网站上就能看到最新的修改                    ,大家感兴趣可以自己试试哦                    。

Tips

Gitbook 可以支持插件以及自定义样式       ,我们只需要在 test-doc 目录下面              ,创建一个名叫 book.json 的文件                    ,可以在这个文件中自定义一些特定的内容       ,增加了插件       ,在启动的时候需要使用gitbook install 安装一下即可             。

{ "title": "XXXX对接API", "description": "这是 Gitbook 与 Gitlab Webhook 集成的项目", "author": "Java 极客技术", "plugins": ["splitter","tbfed-pagefooter","expandable-chapters-small"], "pluginsConfig": { "tbfed-pagefooter": { "copyright":"Copyright &copy COOCAA", "modify_label": "该文件修订时间:", "modify_format": "YYYY-MM-DD HH:mm:ss" } }, "styles": { "website": "./customStyle.css" }

styles 下面可以增加我们自己写的样式                    ,如果需要的话可以加入       。

总结

今天阿粉给大家分享了一个使用的技能             ,在工作中搭建起来       ,相信会很有帮助的                     。有任何问题欢迎在评论区留言我们一起讨论~                     ,原创不宜             ,如有帮助欢迎点赞分享,一键三连             。

更多优质内容欢迎关注公众号【Java 极客技术】                     ,我准备了一份面试资料                    ,回复【bbbb07】免费领取。希望能在这寒冷的日子里,帮助到大家                     。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
vue3.0脚手架搭建项目(如何使用Vue3+Vite+TS快速搭建一套实用的脚手架) ajax跨域 cors(Ajax 跨域,这应该是最全的解决方案了)