diff --git a/app.py b/app.py index 62bf799..1473a6c 100644 --- a/app.py +++ b/app.py @@ -9,7 +9,8 @@ from werkzeug.security import generate_password_hash, check_password_hash from database import init_db, get_checkin, save_checkin, delete_checkin, get_all_checkins app = Flask(__name__) -app.secret_key = os.urandom(24) +# 固定密钥确保 gunicorn 多 worker 下 session 可互通 +app.secret_key = os.environ.get('SECRET_KEY', 'ziwei-power-secret-2026') # 会话持久化:30 天 app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=30) diff --git a/deploy.sh b/deploy.sh index 4794173..8c658ae 100644 --- a/deploy.sh +++ b/deploy.sh @@ -1,6 +1,9 @@ #!/bin/bash # ziwei-power 一键部署脚本 # 用法: bash deploy.sh [port] +# +# 首次运行: 自动生成 .env (SECRET_KEY),之后不变 +# 多 worker 安全: 所有 worker 共享同一密钥 set -e @@ -30,7 +33,15 @@ fi echo "安装依赖..." venv/bin/pip install -q -r requirements.txt -# 3. 自动建表(首次运行) +# 3. 生成/读取固定 SECRET_KEY(多 worker 共享) +if [ ! -f ".env" ]; then + echo "生成 SECRET_KEY..." + python3 -c "import os; print('SECRET_KEY=' + os.urandom(24).hex())" > .env +fi +set -a; source .env; set +a +export SECRET_KEY + +# 4. 自动建表(首次运行) echo "初始化数据库..." venv/bin/python -c " from database import init_db