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

打印 上一主题 下一主题

主题 1976|帖子 1976|积分 5928

前置条件



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

步骤

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

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


  • 进入宝塔面板,点击终端输入代码。
  • 更新软件包列表:
  1. sudo apt update
复制代码


  • 安装git:
  1. sudo apt install git
复制代码
体系会提示安装所需的依赖项,输入 Y 确认安装。


  • 验证安装:
  1. git --version
  2. # 安装成功显示:git version 2.x.x
复制代码


2. 设置ssh实现免登录



  • 进入Github官网,点击右上角本身的头像:

    • 在弹出列表中点击Settings进入设置页
    • 在左侧列表中点击SSH and GPG keys
    • 在中部选项卡中点击New SSH key按钮


  • 回到终端天生SSH密钥:
  1. 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:确认暗码,默认空缺。

  • 获取公钥内容:
  1. cat /root/.ssh/id_rsa.pub
  2. # 通常为:ssh-rsa AAAAB3... rest_of_key ...== root@your-hostname
复制代码


  • 复制公钥内容并输入:

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

  • 最后点击Add SSH Key

  • 回到终端测试连接:
  1. ssh -T git@github.com
复制代码


  • 出现一下内容:

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

  1. #The authenticity of host 'github.com (20.205.243.166)' can't be established.
  2. #ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
  3. #This key is not known by any other names.
  4. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
  5. #Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
  6. #Hi 你的名字! You've successfully authenticated, but GitHub does not provide shell access.
复制代码

3. 拉取项目文件,并创建网站



  • 进入宝塔面板

    • 点击左侧菜单中的文件项。
    • 点击地点栏切换地点为:www/wwwroot/。
    • 点击终端按钮。

  • 输入进行项目拉取
  1. #此次为你的项目SSH连接
  2. git clone git@github.com:yourname/project_xxx.git
复制代码



  • 拉取完成后创建网站

    • 点击左侧菜单中的网站
    • 点击HTML项目选项卡。
    • 点击添加HTML项目按钮。


  • 输入内容

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

留意


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



  • 添加Hook:

    • 在宝塔面板中点击软件市肆
    • 点击以安装找到WebHook并点击。
    • 在弹出窗口点击添加Hook


  • 添加Hook:

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

  1. #输出更新时间
  2. echo "网站更新时间为:"
  3. date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
  4. #project_name为网站项目,目录基本都是这样
  5. cd /www/wwwroot/project_name
  6. #执行的git拉取命令,本质上是镜像仓库,所以不用保存本地修改
  7. #获取远程最新状态
  8. git fetch --all
  9. # 强制将本地分支重置为远程分支的状态
  10. git reset --hard origin/<你的分支名>
  11. # 删除本地所有未被 Git 跟踪的文件和目录
  12. git clean -fd
复制代码



  • 添加完成后点击查看密钥,复制GET/POST后的URl。

  • 测试Webhook是否能自动拉取:

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

  • 网站项目堆栈中:

    • 点击Settings选项。
    • 点击Webhook选项。
    • 点击Add webhook按钮。


  • 将URL填入。
  • 将Content type设置为application/json
  • 将SSL verification设置为Disable (not recommended)
  • 点击Add webhook

  • 测试项目更新是否能同步更新网站:

    • 更新项目……
    • 打开网站检查……


5. 扩展

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


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

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


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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

没腿的鸟

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表