没腿的鸟 发表于 2025-2-22 20:47:37

通过宝塔利用webhook同步GitHub中项目实现建站

前置条件



[*]已经安装宝塔面板的服务器:此步骤网上或者B站有很多
[*]安装webhook:在宝塔面板中的软件市肆查找安装即可。
[*]已有Github账号:默认有的。
[*]已有网站静态文件:项目编译后的静态文件已上传到Github堆栈中。
[*]域名:若服务器在国内,则须要存案,否则不须要。
步骤

1. 安装git以便拉取项目代码

笔者体系利用的是Debian,若是别的体系则可问chatgpt。


[*]进入宝塔面板,点击终端输入代码。
[*]更新软件包列表:
sudo apt update


[*]安装git:
sudo apt install git
体系会提示安装所需的依赖项,输入 Y 确认安装。


[*]验证安装:
git --version
# 安装成功显示:git version 2.x.x
https://i-blog.csdnimg.cn/img_convert/e8e6ba39c5fcd0b71c57933dc27d3739.webp?x-oss-process=image/format,png
2. 设置ssh实现免登录



[*]进入Github官网,点击右上角本身的头像:
[*]在弹出列表中点击Settings进入设置页
[*]在左侧列表中点击SSH and GPG keys
[*]在中部选项卡中点击New SSH key按钮
https://i-blog.csdnimg.cn/img_convert/bb34ebf4f72665e649b30304fc01e737.webp?x-oss-process=image/format,png

[*]回到终端天生SSH密钥:
ssh-keygen -t rsa


[*]出现以下停顿回车即可:

[*]Enter file in which to save the key (/root/.ssh/id_rsa):ssh文件生存目次,默认即是圆括号中的地点。
[*]Enter passphrase (empty for no passphrase):文件暗码,默认空缺即可,个人利用无所谓。
[*]Enter same passphrase again:确认暗码,默认空缺。

[*]获取公钥内容:
cat /root/.ssh/id_rsa.pub
# 通常为:ssh-rsa AAAAB3... rest_of_key ...== root@your-hostname


[*]复制公钥内容并输入:

[*]Title - 展示名称,可以为XX服务器的SSH等等。
[*]key type - 键类型,默认即可。
[*]Key - 公钥内容粘贴进去。

[*]最后点击Add SSH Key
https://i-blog.csdnimg.cn/img_convert/6ba1a1a73edb92beb4109db0279d41c2.webp?x-oss-process=image/format,png
[*]回到终端测试连接:
ssh -T git@github.com


[*]出现一下内容:

[*]由本人确认是否信托主机:GitHub 的官方 ED25519 指纹为(SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU)
[*]可以在 GitHub 官方文档 SSH key fingerprints 中查到这一指纹。
[*]如果指纹匹配并且你确信是连接到 GitHub,可以输入 yes,然后按 Enter。

#The authenticity of host 'github.com (20.205.243.166)' can't be established.
#ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
#This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/)? yes
#Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
#Hi 你的名字! You've successfully authenticated, but GitHub does not provide shell access.
3. 拉取项目文件,并创建网站



[*]进入宝塔面板
[*]点击左侧菜单中的文件项。
[*]点击地点栏切换地点为:www/wwwroot/。
[*]点击终端按钮。

[*]输入进行项目拉取:
#此次为你的项目SSH连接
git clone git@github.com:yourname/project_xxx.git
https://i-blog.csdnimg.cn/img_convert/32852c9910b2c171cd841917c05c9a91.webp?x-oss-process=image/format,png


[*]拉取完成后创建网站
[*]点击左侧菜单中的网站项
[*]点击HTML项目选项卡。
[*]点击添加HTML项目按钮。
https://i-blog.csdnimg.cn/img_convert/7c5478750e6079910700844c192f51d3.webp?x-oss-process=image/format,png

[*]输入内容
[*]域名 - 你的域名例如:www.myblog.com以及myblog.com。
[*]备注 - 展示用例如:XX博客网站。
[*]根目次 - 项目目次:www/wwwroot/myproject。
[*]完成后点击确定。

留意:


[*]现在如果你的域名已经解析到了服务器ip,并且服务器实例中的安全组以及宝塔面板中的安全选项中开启了80端口和443端口,那么得稍等片刻后才能打开得了网站。
   趁便一提,443端口是添加了SSL证书后利用到的,以及不发起直接将域名解析到个人服务器ip地点,随便找个CDN加快网站隐藏。
4. 设置webhook实当代码同步



[*]添加Hook:
[*]在宝塔面板中点击软件市肆。
[*]点击以安装找到WebHook并点击。
[*]在弹出窗口点击添加Hook。
https://i-blog.csdnimg.cn/img_convert/d1b09ccd7aabd1b217e38ecafb84c9b0.webp?x-oss-process=image/format,png

[*]添加Hook:

[*]名称 - 展示的名称,可为XX博客同步
[*]执行脚本 - 填入以下内容

#输出更新时间
echo "网站更新时间为:"
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
#project_name为网站项目,目录基本都是这样
cd /www/wwwroot/project_name
#执行的git拉取命令,本质上是镜像仓库,所以不用保存本地修改
#获取远程最新状态
git fetch --all
# 强制将本地分支重置为远程分支的状态
git reset --hard origin/<你的分支名>
# 删除本地所有未被 Git 跟踪的文件和目录
git clean -fd
https://i-blog.csdnimg.cn/img_convert/362a825b8fc68c16fed2977abfa7740b.webp?x-oss-process=image/format,png


[*] 添加完成后点击查看密钥,复制GET/POST后的URl。
https://i-blog.csdnimg.cn/img_convert/7f04bdad727b8135ad1558fd0d1f185e.webp?x-oss-process=image/format,png
[*] 测试Webhook是否能自动拉取:

[*]进入项目文件夹删除某些文件
[*]点击测试按钮
[*]查看文件是否被拉取下来
[*]如果文件规复了则乐成完成

[*] 到网站项目堆栈中:

[*]点击Settings选项。
[*]点击Webhook选项。
[*]点击Add webhook按钮。
https://i-blog.csdnimg.cn/img_convert/3769d9aa0670e83b42d27b0714aa7774.webp?x-oss-process=image/format,png

[*] 将URL填入。
[*] 将Content type设置为application/json
[*] 将SSL verification设置为Disable (not recommended)
[*] 点击Add webhook
https://i-blog.csdnimg.cn/img_convert/d967c0fdc8897d7b003fe3e4c43244fc.webp?x-oss-process=image/format,png
[*] 测试项目更新是否能同步更新网站:

[*]更新项目……
[*]打开网站检查……

5. 扩展

如果你认识构建网站并部署,例如利用node.js命令。那么实现以下功能也不是不行:


[*]将Vue项目部署到服务器上实现动态部署网站。
[*]每次更新后生存记录。
[*]……
反正这个基本原理流程如下:

[*]远程堆栈更新,向服务器提供的接口发送更新消息
[*]服务器接收到更新消息,则执行对应代码脚本。
至于GitHub中的SSL verification选项题目:


[*]如果想开启的话,须要给宝塔设置域名并且设置SSL证书,我看了下宝塔webhook利用的是服务器ip+端口号,是应该给面板设置域名启看你本身吧。
[*]如果不想给面板设置域名则:新建域名解析→CDN→服务器→反向代理(https://127.0.0.1:宝塔端口),并给反向代理和CDN设置SSL证书。然后用域名更换webhook的url中服务器ip+端口号即可。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 通过宝塔利用webhook同步GitHub中项目实现建站