diff --git a/app.py b/app.py index 9074901..62bf799 100644 --- a/app.py +++ b/app.py @@ -179,4 +179,5 @@ def api_user(): if __name__ == '__main__': init_db() app.config['TEMPLATES_AUTO_RELOAD'] = True - app.run(host='0.0.0.0', port=5058, debug=False) + port = int(os.environ.get('PORT', 5058)) + app.run(host='0.0.0.0', port=port, debug=False) diff --git a/deploy.sh b/deploy.sh new file mode 100644 index 0000000..4794173 --- /dev/null +++ b/deploy.sh @@ -0,0 +1,56 @@ +#!/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