97 lines
2.6 KiB
Bash
97 lines
2.6 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
|
|||
|
|
# 配置参数
|
|||
|
|
APP_DIR="/home/work/keyword_crawl"
|
|||
|
|
VENV_PATH="$APP_DIR/venv"
|
|||
|
|
# 使用绝对路径指定应用,或者使用相对路径
|
|||
|
|
APP_NAME="flask_wht_server_api:app" # 原始方式
|
|||
|
|
# 或者使用:APP_NAME="flask_wht_server_api"
|
|||
|
|
PORT="8216"
|
|||
|
|
WORKERS="1" # 先使用1个worker调试
|
|||
|
|
LOG_FILE="$APP_DIR/log10bjh_wht_server_api_$(date +%y%m%d%H%M).log"
|
|||
|
|
PID_FILE="/tmp/gunicorn_wht_server_api.pid"
|
|||
|
|
TIMEOUT=120
|
|||
|
|
|
|||
|
|
# 进入应用目录
|
|||
|
|
cd "$APP_DIR" || {
|
|||
|
|
echo "Failed to change directory to $APP_DIR"
|
|||
|
|
exit 1
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
echo "当前目录: $(pwd)"
|
|||
|
|
echo "目录内容:"
|
|||
|
|
ls -la *.py
|
|||
|
|
|
|||
|
|
# 激活虚拟环境
|
|||
|
|
if [ -f "$VENV_PATH/bin/activate" ]; then
|
|||
|
|
source "$VENV_PATH/bin/activate"
|
|||
|
|
echo "✓ Virtual environment activated"
|
|||
|
|
echo "Python: $(which python)"
|
|||
|
|
else
|
|||
|
|
echo "Error: Virtual environment not found at $VENV_PATH"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 添加当前目录到Python路径
|
|||
|
|
export PYTHONPATH="$APP_DIR:$PYTHONPATH"
|
|||
|
|
echo "PYTHONPATH: $PYTHONPATH"
|
|||
|
|
|
|||
|
|
echo "========================================"
|
|||
|
|
echo "Deploying Flask Application"
|
|||
|
|
echo "========================================"
|
|||
|
|
echo "Application: $APP_NAME"
|
|||
|
|
echo "Port: $PORT"
|
|||
|
|
echo "Workers: $WORKERS"
|
|||
|
|
echo "Log file: $LOG_FILE"
|
|||
|
|
echo "Directory: $(pwd)"
|
|||
|
|
echo "========================================"
|
|||
|
|
|
|||
|
|
# 检查应用文件
|
|||
|
|
APP_FILE="flask_wht_server_api.py"
|
|||
|
|
if [ ! -f "$APP_FILE" ]; then
|
|||
|
|
echo "Error: $APP_FILE not found!"
|
|||
|
|
echo "Files in directory:"
|
|||
|
|
ls -la
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 简单测试Python是否能导入模块
|
|||
|
|
echo "Testing Python import..."
|
|||
|
|
python -c "
|
|||
|
|
import sys
|
|||
|
|
print('Python path:', sys.path)
|
|||
|
|
try:
|
|||
|
|
import flask_wht_server_api
|
|||
|
|
print('✓ Successfully imported flask_wht_server_api')
|
|||
|
|
except Exception as e:
|
|||
|
|
print(f'✗ Import failed: {e}')
|
|||
|
|
"
|
|||
|
|
|
|||
|
|
# (1) 停止现有进程
|
|||
|
|
echo ""
|
|||
|
|
echo "Stopping existing processes..."
|
|||
|
|
pkill -f "gunicorn.*flask_wht_server_api" 2>/dev/null
|
|||
|
|
pkill -f "python.*flask_wht_server_api" 2>/dev/null
|
|||
|
|
sleep 2
|
|||
|
|
|
|||
|
|
# 清除PID文件
|
|||
|
|
[ -f "$PID_FILE" ] && rm -f "$PID_FILE"
|
|||
|
|
|
|||
|
|
# (2) 启动新进程 - 使用不同的方式
|
|||
|
|
echo ""
|
|||
|
|
echo "Starting Gunicorn server..."
|
|||
|
|
|
|||
|
|
# 方法1:使用绝对路径
|
|||
|
|
# CMD="gunicorn -w $WORKERS -b 0.0.0.0:$PORT --pid $PID_FILE --timeout $TIMEOUT --chdir $APP_DIR $APP_NAME"
|
|||
|
|
|
|||
|
|
# 方法2:使用点号表示法(推荐)
|
|||
|
|
CMD="gunicorn -w $WORKERS -b 0.0.0.0:$PORT --pid $PID_FILE --timeout $TIMEOUT 'flask_wht_server_api:app'"
|
|||
|
|
|
|||
|
|
echo "Executing: $CMD"
|
|||
|
|
|
|||
|
|
# 直接运行(不后台运行,方便查看错误)
|
|||
|
|
echo ""
|
|||
|
|
echo "=== 直接运行(查看实时输出)==="
|
|||
|
|
gunicorn -w $WORKERS -b 0.0.0.0:$PORT --pid $PID_FILE --timeout $TIMEOUT --access-logfile - --error-logfile - 'flask_wht_server_api:app'
|
|||
|
|
|