#!/bin/bash # ziwei-power 一键部署脚本 # 用法: bash deploy.sh [port] set -e PORT="${1:-5058}" PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)" LOG_FILE="/tmp/ziwei-power.log" echo "=== ziwei-power 部署 ===" echo "目录: $PROJECT_DIR" echo "端口: $PORT" # 1. 停止旧进程 OLD_PID=$(lsof -ti :$PORT 2>/dev/null || true) if [ -n "$OLD_PID" ]; then echo "停止旧进程 PID=$OLD_PID..." kill $OLD_PID 2>/dev/null || true sleep 1 fi # 2. 创建/激活 venv cd "$PROJECT_DIR" if [ ! -d "venv" ]; then echo "创建虚拟环境..." python3 -m venv venv fi echo "安装依赖..." venv/bin/pip install -q -r requirements.txt # 3. 自动建表(首次运行) echo "初始化数据库..." venv/bin/python -c " from database import init_db init_db() print('数据库就绪') " # 4. 启动服务 echo "启动服务 (PID=$$)..." nohup venv/bin/python app.py > "$LOG_FILE" 2>&1 & NEW_PID=$! sleep 1 if kill -0 $NEW_PID 2>/dev/null; then echo "部署完成!" echo " 访问: http://localhost:$PORT" echo " 日志: $LOG_FILE" echo " PID : $NEW_PID" else echo "启动失败,查看日志:" cat "$LOG_FILE" exit 1 fi