完成Gunicorn启动服务器的指南文档和快速启动停止脚本

This commit is contained in:
rjb
2025-08-24 23:40:44 +08:00
parent fb160a7a31
commit 09065f2ce7
11 changed files with 731 additions and 0 deletions

0
scripts/deploy.sh Normal file → Executable file
View File

39
scripts/restart_gunicorn.sh Executable file
View File

@@ -0,0 +1,39 @@
#!/bin/bash
echo "🔄 重启Gunicorn服务..."
echo "=========================================="
# 进入项目目录
cd /home/renjianbo/aitsc
# 停止服务
echo "🛑 停止现有服务..."
if [ -f "logs/gunicorn.pid" ]; then
PID=$(cat logs/gunicorn.pid)
if ps -p $PID > /dev/null; then
kill -TERM $PID
sleep 3
fi
fi
# 激活conda环境
echo "🔧 激活环境..."
eval "$(/home/renjianbo/miniconda3/bin/conda shell.bash hook)"
conda activate myenv
# 设置环境变量
export FLASK_ENV=production
export SECRET_KEY="your-production-secret-key-must-be-very-secure"
export LLM_API_KEY="sk-your-production-api-key"
# 创建必要目录
mkdir -p logs uploads
echo "✅ 环境已激活: Python $(python --version)"
echo "🌐 服务端口: 5002"
echo "🔗 访问地址: http://101.43.95.130:5002"
echo "=========================================="
# 启动服务
echo "🚀 启动新服务..."
gunicorn -c gunicorn.conf.py run_dev:app

27
scripts/start_gunicorn.sh Executable file
View File

@@ -0,0 +1,27 @@
#!/bin/bash
echo "🚀 启动Gunicorn服务..."
echo "=========================================="
# 进入项目目录
cd /home/renjianbo/aitsc
# 激活conda环境
eval "$(/home/renjianbo/miniconda3/bin/conda shell.bash hook)"
conda activate myenv
# 设置环境变量
export FLASK_ENV=production
export SECRET_KEY="your-production-secret-key-must-be-very-secure"
export LLM_API_KEY="sk-your-production-api-key"
# 创建必要目录
mkdir -p logs uploads
echo "✅ 环境已激活: Python $(python --version)"
echo "🌐 服务端口: 5002"
echo "🔗 访问地址: http://101.43.95.130:5002"
echo "=========================================="
# 启动Gunicorn服务
gunicorn -c gunicorn.conf.py run_dev:app

80
scripts/status_gunicorn.sh Executable file
View File

@@ -0,0 +1,80 @@
#!/bin/bash
echo "📊 Gunicorn服务状态检查"
echo "=========================================="
# 进入项目目录
cd /home/renjianbo/aitsc
# 检查进程状态
echo "🔍 检查进程状态..."
PROCESSES=$(ps aux | grep gunicorn | grep -v grep)
if [ -n "$PROCESSES" ]; then
echo "✅ Gunicorn进程正在运行:"
echo "$PROCESSES"
else
echo "❌ 未找到运行中的Gunicorn进程"
fi
echo ""
# 检查端口监听
echo "🔍 检查端口监听状态..."
PORT_STATUS=$(ss -tlnp | grep :5002)
if [ -n "$PORT_STATUS" ]; then
echo "✅ 端口5002正在监听:"
echo "$PORT_STATUS"
else
echo "❌ 端口5002未在监听"
fi
echo ""
# 检查PID文件
echo "🔍 检查PID文件..."
if [ -f "logs/gunicorn.pid" ]; then
PID=$(cat logs/gunicorn.pid)
echo "📋 PID文件存在: $PID"
if ps -p $PID > /dev/null; then
echo "✅ PID对应的进程正在运行"
else
echo "⚠️ PID对应的进程不存在"
fi
else
echo "⚠️ PID文件不存在"
fi
echo ""
# 检查日志文件
echo "🔍 检查日志文件..."
if [ -f "logs/gunicorn_access.log" ]; then
echo "✅ 访问日志文件存在"
echo "📄 最后10行访问日志:"
tail -10 logs/gunicorn_access.log
else
echo "⚠️ 访问日志文件不存在"
fi
echo ""
if [ -f "logs/gunicorn_error.log" ]; then
echo "✅ 错误日志文件存在"
echo "📄 最后10行错误日志:"
tail -10 logs/gunicorn_error.log
else
echo "⚠️ 错误日志文件不存在"
fi
echo ""
# 测试服务响应
echo "🔍 测试服务响应..."
RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:5002/ 2>/dev/null)
if [ "$RESPONSE" = "200" ]; then
echo "✅ 服务响应正常 (HTTP $RESPONSE)"
else
echo "❌ 服务响应异常 (HTTP $RESPONSE)"
fi
echo "=========================================="

48
scripts/stop_gunicorn.sh Executable file
View File

@@ -0,0 +1,48 @@
#!/bin/bash
echo "🛑 停止Gunicorn服务..."
echo "=========================================="
# 进入项目目录
cd /home/renjianbo/aitsc
# 检查PID文件是否存在
if [ -f "logs/gunicorn.pid" ]; then
PID=$(cat logs/gunicorn.pid)
echo "📋 找到Gunicorn进程PID: $PID"
# 检查进程是否存在
if ps -p $PID > /dev/null; then
echo "🔄 正在停止进程..."
kill -TERM $PID
# 等待进程停止
sleep 3
# 检查是否成功停止
if ps -p $PID > /dev/null; then
echo "⚠️ 进程仍在运行,强制停止..."
kill -9 $PID
fi
echo "✅ Gunicorn服务已停止"
else
echo "⚠️ 进程不存在,可能已经停止"
fi
else
echo "⚠️ 未找到PID文件尝试查找进程..."
# 查找Gunicorn进程
PIDS=$(ps aux | grep gunicorn | grep -v grep | awk '{print $2}')
if [ -n "$PIDS" ]; then
echo "📋 找到Gunicorn进程: $PIDS"
echo $PIDS | xargs kill -TERM
sleep 3
echo "✅ Gunicorn服务已停止"
else
echo " 未找到运行中的Gunicorn进程"
fi
fi
echo "=========================================="