6.1 KiB
6.1 KiB
Spug 部署快速参考
🚀 快速开始(5 分钟配置)
1. 上传脚本到 Spug 服务器
scp spug/deploy.sh user@spug-server:/opt/spug/scripts/
scp spug/hospital-backend.service user@spug-server:/tmp/
ssh user@spug-server "chmod +x /opt/spug/scripts/deploy.sh"
2. 在目标服务器配置 systemd 服务
# 登录目标服务器
ssh user@target-server
# 复制服务文件
sudo cp /tmp/hospital-backend.service /etc/systemd/system/
# 启用服务
sudo systemctl daemon-reload
sudo systemctl enable hospital-backend
3. 在 Spug Web 界面配置
步骤 1: 添加主机
- 菜单:系统管理 -> 主机管理 -> 创建主机
- 填写:
- 名称:
production - IP:你的服务器 IP
- 端口:22
- 认证:选择密钥或密码
- 名称:
步骤 2: 创建应用
- 菜单:应用管理 -> 创建应用
- 填写:
- 名称:
hospital-performance - 类型:
其他 - 仓库地址:
https://gitea.gentronhealth.com/chenqi/hospital_performance.git - 分支:
main
- 名称:
步骤 3: 配置环境变量
在应用详情页的 环境变量 标签页添加:
SPUG_DEPLOY_DIR=/var/www/hospital-performance
PYTHON_VERSION=python3.10
BACKEND_SERVICE=hospital-backend
BACKEND_PORT=8000
FRONTEND_SERVICE=nginx
LOG_FILE=/var/log/spug/deploy.log
步骤 4: 配置发布
- 进入应用的 发布配置 标签页
- 构建类型:
跳过构建 - 发布脚本:
/opt/spug/scripts/deploy.sh - 保存
步骤 5: 执行发布
- 菜单:发布管理 -> 创建发布单
- 选择应用和版本
- 选择主机
production - 点击 立即发布
📋 常用命令速查
查看部署日志
# 实时查看
tail -f /var/log/spug/deploy.log
# 查看最近 100 行
tail -n 100 /var/log/spug/deploy.log
# 搜索错误
grep ERROR /var/log/spug/deploy.log
服务管理
# 查看状态
systemctl status hospital-backend
systemctl status nginx
# 重启服务
systemctl restart hospital-backend
systemctl restart nginx
# 查看日志
journalctl -u hospital-backend -f
Git 操作
# 查看当前版本
cd /var/www/hospital-performance
git log --oneline -5
# 回退版本
git reset --hard <commit-hash>
数据库操作
# 手动迁移
cd /var/www/hospital-performance/backend
source ../venv/bin/activate
alembic upgrade head
# 查看迁移历史
alembic history
# 数据库备份
pg_dump -h 192.168.110.252 -p 15432 -U postgres hospital_performance > backup.sql
# 数据库恢复
psql -h 192.168.110.252 -p 15432 -U postgres hospital_performance < backup.sql
前端调试
# 检查 Node 版本
node -v
npm -v
# 清理重建
cd /var/www/hospital-performance/frontend
rm -rf node_modules dist
npm install --production
npm run build
🔧 故障排查流程图
部署失败
├─ 前置检查失败
│ ├─ 缺少命令 → 安装 git/python/node/npm
│ └─ 磁盘不足 → 清理空间或扩容
│
├─ 代码更新失败
│ ├─ Git 连接失败 → 检查网络和凭证
│ └─ 冲突 → 手动解决或重置
│
├─ 后端部署失败
│ ├─ 虚拟环境 → 删除重建 venv
│ ├─ 依赖安装 → 检查 requirements.txt
│ ├─ 数据库迁移 → 手动执行 alembic
│ └─ 服务启动 → 检查 systemd 配置
│
└─ 前端部署失败
├─ npm install 失败 → 清理缓存 npm cache clean
├─ 构建失败 → 检查 Node.js 版本
└─ Nginx 加载 → systemctl reload nginx
⚠️ 常见问题速查
Q1: 权限错误 "Permission denied"
# 修复目录权限
sudo chown -R www-data:www-data /var/www/hospital-performance
sudo chmod -R 755 /var/www/hospital-performance
Q2: 端口被占用
# 查看端口占用
sudo lsof -i :8000
sudo netstat -tlnp | grep 8000
# 杀死进程
sudo kill -9 <PID>
Q3: 数据库连接失败
# 测试连接
psql -h 192.168.110.252 -p 15432 -U postgres -d hospital_performance
# 检查防火墙
sudo ufw status
sudo telnet 192.168.110.252 15432
Q4: Python 模块找不到
# 确认虚拟环境激活
source /var/www/hospital-performance/venv/bin/activate
# 重新安装依赖
pip install -r requirements.txt --force-reinstall
Q5: 前端页面空白
# 检查浏览器控制台错误
F12 -> Console
# 检查 Nginx 配置
sudo nginx -t
sudo cat /etc/nginx/sites-available/default
# 检查文件权限
ls -la /var/www/hospital-performance/frontend/dist/
📊 监控指标
关键指标
- API 响应时间: < 200ms
- 页面加载时间: < 3s
- 服务可用性: > 99.9%
- 数据库连接数: < 100
监控命令
# CPU 使用率
top -bn1 | grep "Cpu(s)"
# 内存使用
free -h
# 磁盘 IO
iostat -x 1
# 网络流量
iftop -P -n
# 进程监控
ps aux | grep uvicorn
ps aux | grep nginx
🎯 发布清单
发布前检查
- 代码已合并到 main 分支
- 通过所有测试
- 数据库迁移脚本就绪
- 备份策略已配置
- 回滚方案已准备
发布中检查
- 代码更新成功
- 依赖安装完成
- 数据库迁移成功
- 服务启动正常
- 健康检查通过
发布后验证
- 访问前端页面
- 测试登录功能
- 验证核心功能
- 检查错误日志
- 监控系统资源
📞 应急联系
升级流程
- 一级故障(功能异常)→ 开发团队
- 二级故障(性能下降)→ 运维团队 + 开发负责人
- 三级故障(服务中断)→ 紧急响应小组
回滚命令
# 快速回滚到上一个版本
cd /var/www/hospital-performance
git reset --hard HEAD~1
# 重启服务
systemctl restart hospital-backend
systemctl restart nginx
提示: 将此文件打印或保存为书签,便于快速查阅!