ball-tracking-cv/deploy.sh
2025-08-10 10:01:43 +08:00

86 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
# 部署脚本
# 使用方法: ./deploy.sh
set -e # 遇到错误立即退出
PROJECT_ROOT="/path/to/your/ball-tracking/server-neo" # 请替换为实际路径
PROJECT_NAME="ball-tracking-server"
USER="www-data" # 或者你的用户名
PYTHON_VERSION="python3"
echo "🚀 开始部署 $PROJECT_NAME..."
# 1. 进入项目目录
cd "$PROJECT_ROOT"
# 2. 更新代码 (如果使用 git)
if [ -d ".git" ]; then
echo "📥 更新代码..."
git pull origin main # 或者你的主分支名
fi
# 3. 创建虚拟环境 (如果不存在)
if [ ! -d "venv" ]; then
echo "🐍 创建 Python 虚拟环境..."
$PYTHON_VERSION -m venv venv
fi
# 4. 激活虚拟环境并安装依赖
echo "📦 安装 Python 依赖..."
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
pip install gunicorn supervisor # 生产环境依赖
# 5. 构建前端
echo "🏗️ 构建前端..."
cd app/web
if command -v bun &> /dev/null; then
echo "使用 Bun 构建..."
bun install
bun run build
elif command -v npm &> /dev/null; then
echo "使用 npm 构建..."
npm install
npm run build
else
echo "❌ 错误: 未找到 bun 或 npm"
exit 1
fi
# 6. 返回项目根目录
cd "$PROJECT_ROOT"
# 7. 创建必要的目录
echo "📁 创建必要目录..."
mkdir -p logs
mkdir -p data/sessions
# 8. 设置权限
echo "🔐 设置文件权限..."
chown -R $USER:$USER .
chmod +x deploy.sh
chmod +x start.sh
chmod +x stop.sh
# 9. 复制配置文件到系统目录 (需要 sudo)
echo "⚙️ 配置系统服务..."
if [ -f "/etc/supervisor/conf.d/$PROJECT_NAME.conf" ]; then
sudo cp supervisor.conf /etc/supervisor/conf.d/$PROJECT_NAME.conf
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl restart $PROJECT_NAME
else
sudo cp supervisor.conf /etc/supervisor/conf.d/$PROJECT_NAME.conf
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start $PROJECT_NAME
fi
echo "✅ 部署完成!"
echo "📝 查看日志: sudo supervisorctl tail -f $PROJECT_NAME"
echo "🔄 重启服务: sudo supervisorctl restart $PROJECT_NAME"
echo "⏹️ 停止服务: sudo supervisorctl stop $PROJECT_NAME"