AI 编程自动化部署文档
目录
- [部署架构概述](#部署架构概述)
- [腾讯工蜂 Git 仓库配置](#腾讯工蜂-git-仓库配置)
- [SSH 密钥配置](#ssh-密钥配置)
- [服务器环境准备](#服务器环境准备)
- [宝塔面板Webhook脚本配置](#宝塔面板webhook脚本配置)
- 查看Webhook密钥
- 部署脚本
- [Git 配置Webhook触发](#git-配置webhook触发)
- 腾讯工蜂网络回调钩子配置
- 秘密令牌说明
- [部署验证](#部署验证)
- [常见问题处理](#常见问题处理)
部署架构概述
┌─────────────────┐ push ┌─────────────────┐
│ 腾讯工蜂Git │ ──────────────▶ │ 宝塔Webhook │
│ (代码仓库) │ │ (触发部署) │
└─────────────────┘ └────────┬────────┘
│
▼
┌────────────────────┐
│ 部署脚本执行 │
│ (拉取代码/安装 │
│ 依赖/重启服务) │
└────────┬───────────┘
│
┌────────────────────────┼────────────────────────┐
▼ ▼ ▼
┌────────────────┐ ┌────────────────┐ ┌────────────────┐
│ 前端静态文件 │ │ PHP后端API │ │ 数据库 │
│ (Nginx) │ │ (PHP-FPM) │ │ (MySQL) │
└────────────────┘ └────────────────┘ └────────────────┘腾讯工蜂 Git 仓库配置
1. 创建仓库
- 登录 腾讯工蜂
- 点击「新建仓库」
- 填写仓库信息:
- 仓库名称:`ai-tools-nav`(或其他名称)
- 仓库类型:选择「公开」或「私有」
- 初始化选项:建议勾选「添加 README」
2. 本地 Git 关联
# 进入项目目录
cd /your/local/project/path
# 初始化Git(如果尚未初始化)
git init
# 添加远程仓库地址
git remote add origin https://git.code.tencent.com/your-username/ai-tools-nav.git
# 或者如果已有关联,修改远程地址
git remote set-url origin https://git.code.tencent.com/your-username/ai-tools-nav.git3. 推送代码到工蜂
# 添加所有文件
git add .
# 提交代码
git commit -m "Initial commit"
# 推送到远程仓库
git push -u origin master
# 或推送 main 分支
git push -u origin mainSSH 密钥配置
为了安全便捷地访问腾讯工蜂,建议配置SSH密钥替代HTTPS认证。
1. 生成 SSH 密钥
在本地终端执行以下命令:
ssh-keygen -t rsa -C "your-description"> 注意:`your-description` 只是 SSH 密钥的备注名称,用于便于辨识,并非要求是邮箱。按提示完成三次回车即可生成密钥对。
生成的文件:
- 私钥:
~/.ssh/id_rsa - 公钥:
~/.ssh/id_rsa.pub
2. 查看公钥
cat ~/.ssh/id_rsa.pub输出的内容类似:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc... your-description3. 添加公钥到腾讯工蜂
- 访问腾讯工蜂SSH密钥设置页面:https://git.code.tencent.com/profile/keys
- 点击「添加 SSH 公钥」
- 填写公钥信息:
- 标题:任意描述,如「我的电脑」
- 公钥:粘贴 `~/.ssh/id_rsa.pub` 文件的全部内容
- 点击「添加」
4. 验证SSH连接
在终端执行:
ssh -T git@git.code.tencent.com首次使用需要确认并添加主机到本地SSH可信列表。
若返回以下内容,表示连接成功:
Hi XXX! You've successfully authenticated, but Tencent does not provide shell access.5. 修改 Git 仓库地址为 SSH 协议
配置完成后,将仓库地址从 HTTPS 改为 SSH 协议:
# 查看当前远程仓库地址
git remote -v
# 修改为SSH地址
git remote set-url origin git@git.code.tencent.com:your-username/ai-tools-nav.gitSSH 仓库地址格式:
git@git.code.tencent.com:your-username/ai-tools-nav.git6. SSH 连接常见问题解决
如果遇到以下错误:
Unable to negotiate with 106.52.160.162 port 22: no matching host key type found. Their offer: ssh-rsa
fatal: Could not read from remote repository.解决方案:在本地 `.ssh` 目录(Windows一般为 `C:\Users\你的用户名\.ssh`)创建或修改 `config` 文件,添加以下内容:
Host *
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa如果没有
.ssh 目录或 config 文件,可以手动创建。服务器环境准备
1. 安装必要软件(宝塔面板)
在宝塔面板中安装以下软件:
软件 | 版本建议 | 用途 |
Nginx | 1.20+ | Web服务器 |
PHP | 7.4+ | 后端运行环境 |
MySQL | 5.7+ | 数据库 |
Git | 最新版 | 代码拉取 |
2. 创建网站
- 登录宝塔面板
- 点击「网站」→「添加站点」
- 配置信息:
前端站点配置:
- 域名:
your-domain.com - 根目录:
/www/wwwroot/your-domain.com/frontend - PHP版本:选择「纯静态」
后端站点配置:
- 域名:
api.your-domain.com - 根目录:
/www/wwwroot/your-domain.com/backend - PHP版本:7.4 或 8.0
3. 目录结构
部署后的目录结构:
/www/wwwroot/your-domain.com/
├── frontend/ # 前端文件(uniapp编译产物)
│ ├── pages/
│ ├── static/
│ ├── index.html
│ └── ...
├── backend/ # 后端PHP文件
│ ├── api/
│ ├── core/
│ ├── models/
│ ├── config/
│ └── index.php
└── deploy.log # 部署日志宝塔面板Webhook脚本配置
1. 安装Webhook插件
- 登录宝塔面板
- 点击「软件商店」→「搜索Webhook」
- 安装「Webhook」插件
2. 创建Webhook
- 点击「Webhook」→「添加Hook」
- 配置信息:
配置项 | 值 | 说明 |
| 名称 | AI工具导航自动部署 | 自定义Hook名称 |
| 脚本 | 见下方脚本内容 | 部署执行的脚本 |
- 点击「确定」创建
3. 查看Webhook密钥
创建成功后,在Webhook列表中:
- 找到刚创建的Hook
- 点击「查看密钥」按钮
- 弹出窗口显示:
密钥:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
宝塔WebHook使用方法:
GET/POST:
https://your-server-ip:8888/hook?access_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
@param access_key string HOOK密钥
@param param string 自定义参数 (在hook脚本中使用$1接收)重要提示:
access_key是宝塔Webhook的安全密钥,用于验证请求合法性- 请妥善保管,不要泄露给他人
- 腾讯工蜂的「秘密令牌」应填写此
access_key
4. Webhook 部署脚本
将以下脚本复制到Webhook脚本框中:
#!/bin/bash
# ============================================
# AI工具导航站 - 自动部署脚本
# ============================================
# 配置变量
DEPLOY_PATH="/www/wwwroot/your-domain.com"
FRONTEND_PATH="$DEPLOY_PATH/frontend"
BACKEND_PATH="$DEPLOY_PATH/backend"
LOG_FILE="$DEPLOY_PATH/deploy.log"
GIT_REPO="https://git.code.tencent.com/your-username/ai-tools-nav.git"
BRANCH="master"
# 记录部署开始时间
echo "===========================================" >> $LOG_FILE
echo "部署开始时间: $(date '+%Y-%m-%d %H:%M:%S')" >> $LOG_FILE
echo "===========================================" >> $LOG_FILE
# 进入部署目录
cd $DEPLOY_PATH || exit 1
# 拉取最新代码
echo "正在拉取最新代码..." >> $LOG_FILE
git fetch --all >> $LOG_FILE 2>&1
git reset --hard origin/$BRANCH >> $LOG_FILE 2>&1
# 判断拉取结果
if [ $? -eq 0 ]; then
echo "代码拉取成功" >> $LOG_FILE
else
echo "代码拉取失败" >> $LOG_FILE
exit 1
fi
# 前端构建(如果需要)
if [ -d "$FRONTEND_PATH" ] && [ -f "$FRONTEND_PATH/package.json" ]; then
echo "开始构建前端..." >> $LOG_FILE
cd $FRONTEND_PATH
# 检查并安装依赖(可选,根据项目需求)
# if [ -f "package-lock.json" ]; then
# npm install >> $LOG_FILE 2>&1
# fi
# 如果是uniapp项目,需要编译
# npm run build >> $LOG_FILE 2>&1
echo "前端处理完成" >> $LOG_FILE
fi
# 后端权限设置
if [ -d "$BACKEND_PATH" ]; then
echo "设置后端目录权限..." >> $LOG_FILE
chown -R www:www $BACKEND_PATH
chmod -R 755 $BACKEND_PATH
chmod -R 777 $BACKEND_PATH/runtime 2>/dev/null || true
fi
# 前端权限设置
if [ -d "$FRONTEND_PATH" ]; then
echo "设置前端目录权限..." >> $LOG_FILE
chown -R www:www $FRONTEND_PATH
chmod -R 755 $FRONTEND_PATH
fi
# 重启PHP服务(如需要)
echo "尝试重启PHP服务..." >> $LOG_FILE
systemctl restart php-fpm-74 2>/dev/null || true
# 部署完成
echo "部署完成时间: $(date '+%Y-%m-%d %H:%M:%S')" >> $LOG_FILE
echo "===========================================" >> $LOG_FILE
echo "" >> $LOG_FILE
# 返回成功信息
echo "部署成功"
exit 0Git 配置Webhook触发
方式一:腾讯工蜂 Webhook(推荐)
根据腾讯工蜂「网络回调钩子」界面配置:
配置路径:工蜂仓库 → 设置 → 高级设置 → 网络回调钩子
配置项说明
配置项 | 填写内容 | 说明 |
| URL | `https://your-server-ip:8888/hook?access_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` | 宝塔Webhook完整地址(从【3. 查看Webhook密钥】中获取) |
| 秘密令牌 | `xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` | 宝塔Webhook的access_key密钥 |
| 触发器 | 勾选「推送事件」 | 代码推送时触发部署 |
配置步骤
- 进入腾讯工蜂仓库页面
- 点击左侧「设置」菜单
- 选择「高级设置」标签
- 选择「网络回调钩子」子选项
- 点击「创建网络回调钩子」按钮
- 填写配置信息:
┌─────────────────────────────────────────────────────────┐
│ 网络回调钩子配置界面 │
├─────────────────────────────────────────────────────────┤
│ Url │
│ ┌─────────────────────────────────────────────────┐ │
│ │ https://your-server-ip:8888/hook?access_key=xxx │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ 秘密令牌 │
│ ┌─────────────────────────────────────────────────┐ │
│ │ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ 触发器 │
│ ◉ 推送事件 当有版本库推送时,该URL将被触发 │
│ ○ 标签推送事件 │
│ ○ 评论事件 │
│ ○ 议题事件 │
│ ○ 合并请求事件 │
│ ○ 评审事件 │
│ │
│ [ 创建网络回调钩子 ] │
└─────────────────────────────────────────────────────────┘- 点击「创建网络回调钩子」保存
安全说明
- 秘密令牌:用于验证请求来源的合法性,防止恶意调用
- 腾讯工蜂会在请求头中添加
X-Gitlab-Token或类似字段携带此令牌 - 宝塔Webhook会自动校验
access_key参数 - 确保宝塔的
access_key与工蜂的「秘密令牌」一致
方式二:本地Git钩子(备选)
如果腾讯工蜂不支持Webhook,可以使用本地post-receive钩子:
# 在本地仓库创建post-receive钩子
cat > .git/hooks/post-receive << 'EOF'
#!/bin/bash
WEBHOOK_URL="https://your-server-ip:8888/hook?token=xxxxxxxxxxxxx"
while read oldrev newrev refname; do
branch=$(echo $refname | sed 's/refs\/heads\///')
if [ "$branch" == "master" ] || [ "$branch" == "main" ]; then
curl -s "$WEBHOOK_URL"
fi
done
EOF
# 设置执行权限
chmod +x .git/hooks/post-receive部署验证
1. 手动测试
在浏览器中直接访问Webhook地址:
https://your-server-ip:8888/hook?token=xxxxxxxxxxxxx如果返回「部署成功」,说明配置正确。
2. 自动测试
- 修改本地代码
- 提交并推送到腾讯工蜂
- 在服务器上查看部署日志:
tail -f /www/wwwroot/your-domain.com/deploy.log3. 验证网站
- 访问前端:
https://your-domain.com - 访问后端:
https://api.your-domain.com
常见问题处理
问题1:Webhook无法访问
原因: 防火墙未开放8888端口
解决:
# 开放8888端口(宝塔环境)
firewall-cmd --permanent --add-port=8888/tcp
firewall-cmd --reload或者在宝塔面板「安全」中放行8888端口。
问题2:Git拉取失败
原因: 仓库地址需要认证
解决:
在服务器上配置Git凭据:
git config --global credential.helper store
# 首次拉取时输入用户名密码或者使用部署密钥(推荐)。
问题3:权限问题
原因: www用户没有写权限
解决:
chown -R www:www /www/wwwroot/your-domain.com
chmod -R 755 /www/wwwroot/your-domain.com问题4:PHP服务未重启
原因: PHP版本号不对
解决: 根据实际PHP版本修改脚本中的服务名:
# PHP 7.4
systemctl restart php-fpm-74
# PHP 8.0
systemctl restart php-fpm-80问题5:数据库连接失败
解决: 检查后端config/database.php中的数据库配置是否正确。
问题6:Webhook 403 认证失败
原因: 腾讯工蜂的「秘密令牌」与宝塔的 `access_key` 不匹配
解决:
- 在宝塔Webhook中查看正确的
access_key - 在腾讯工蜂「网络回调钩子」的「秘密令牌」字段填入相同的值
- 确保URL中的
access_key参数与秘密令牌一致
问题7:宝塔Webhook测试成功但工蜂推送不触发
原因: 腾讯工蜂Webhook请求格式与宝塔预期不符
解决:
- 检查宝塔Webhook日志,查看接收到的请求参数
- 确认URL格式正确:
https://ip:8888/hook?access_key=xxx - 检查服务器防火墙是否允许来自腾讯工蜂的请求
部署流程图
┌─────────────┐
│ 开发人员 │
│ 提交代码 │
└──────┬──────┘
│ git push
▼
┌─────────────┐
│ 腾讯工蜂 │
│ 触发Webhook│
└──────┬──────┘
│ HTTP请求
▼
┌─────────────┐
│ 宝塔Webhook│
│ 执行部署脚本│
└──────┬──────┘
│
▼
┌─────────────┐
│ 1.拉取代码 │
│ 2.构建前端 │
│ 3.设置权限 │
│ 4.重启服务 │
└──────┬──────┘
│
▼
┌─────────────┐
│ 部署完成 │
│ 网站可访问 │
└─────────────┘配置清单
部署前请确认以下信息:
项目 | 值 | 备注 |
Git仓库地址(HTTPS) | https://git.code.tencent.com/xxx/xxx.git | 替换为实际地址 |
Git仓库地址(SSH) | git@git.code.tencent.com:xxx/xxx.git | SSH协议地址 |
服务器路径 | /www/wwwroot/your-domain.com | 替换为实际路径 |
前端域名 | your-domain.com | 替换为实际域名 |
后端域名 | api.your-domain.com | 替换为实际域名 |
Webhook端口 | 8888 | 宝塔默认端口 |
Webhook访问密钥(access_key) | xxxxxxxxxxxxx | 宝塔Webhook密钥 |
腾讯工蜂秘密令牌 | xxxxxxxxxxxxx | 与access_key一致 |
Git分支 | master 或 main | 根据实际情况 |
PHP版本 | 7.4 或 8.0 | 根据实际情况 |
联系方式
如有问题,请检查:
- 部署日志:
/www/wwwroot/your-domain.com/deploy.log - 宝塔面板日志
- Nginx错误日志
文档更新时间:2026-03-18
在飞书文档中查看
所有评论
加载评论 ...
发表评论