初次提交
This commit is contained in:
218
backend/quick_deploy_linux.sh
Normal file
218
backend/quick_deploy_linux.sh
Normal file
@@ -0,0 +1,218 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 快速部署脚本 - 修复虚拟环境问题
|
||||
|
||||
set -e
|
||||
|
||||
echo "=== 云盘后端快速部署脚本 ==="
|
||||
|
||||
# 检查当前目录
|
||||
if [ ! -f "main.py" ]; then
|
||||
echo "错误: 请在包含main.py的项目根目录下运行此脚本"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "当前目录: $(pwd)"
|
||||
|
||||
# 1. 检查Python环境
|
||||
echo "1. 检查Python环境..."
|
||||
if ! command -v python3 &> /dev/null; then
|
||||
echo "错误: 未找到python3,请先安装Python 3.8+"
|
||||
exit 1
|
||||
fi
|
||||
echo "✓ Python版本: $(python3 --version)"
|
||||
|
||||
# 2. 创建必要目录
|
||||
echo "2. 创建必要目录..."
|
||||
mkdir -p logs uploads
|
||||
echo "✓ 目录创建完成"
|
||||
|
||||
# 3. 直接安装依赖(不使用虚拟环境)
|
||||
echo "3. 安装Python依赖(系统级)..."
|
||||
echo "注意: 这将在系统级别安装依赖包"
|
||||
|
||||
# 检查是否为root用户
|
||||
if [ "$EUID" -eq 0 ]; then
|
||||
echo "检测到root用户,使用pip3安装..."
|
||||
pip3 install --upgrade pip
|
||||
|
||||
# 先安装email-validator
|
||||
echo "安装email-validator..."
|
||||
pip3 install email-validator
|
||||
|
||||
if [ -f "requirements.txt" ]; then
|
||||
echo "从requirements.txt安装依赖..."
|
||||
pip3 install -r requirements.txt
|
||||
else
|
||||
echo "安装基础依赖包..."
|
||||
pip3 install fastapi uvicorn sqlalchemy pymysql redis python-jose passlib python-multipart pydantic pydantic-settings httpx python-dotenv loguru alembic bcrypt
|
||||
fi
|
||||
else
|
||||
echo "使用用户级pip安装..."
|
||||
|
||||
# 检查是否有用户目录写入权限
|
||||
USER_LOCAL="$HOME/.local"
|
||||
if [ ! -w "$USER_LOCAL" ]; then
|
||||
echo "⚠ 用户目录无写入权限,尝试使用系统级安装..."
|
||||
pip3 install --upgrade pip
|
||||
pip3 install email-validator
|
||||
if [ -f "requirements.txt" ]; then
|
||||
pip3 install -r requirements.txt
|
||||
else
|
||||
pip3 install fastapi uvicorn sqlalchemy pymysql redis python-jose passlib python-multipart pydantic pydantic-settings httpx python-dotenv loguru alembic bcrypt
|
||||
fi
|
||||
else
|
||||
pip3 install --user --upgrade pip
|
||||
|
||||
# 先安装email-validator
|
||||
echo "安装email-validator..."
|
||||
pip3 install --user email-validator
|
||||
|
||||
if [ -f "requirements.txt" ]; then
|
||||
echo "从requirements.txt安装依赖..."
|
||||
pip3 install --user -r requirements.txt
|
||||
else
|
||||
echo "安装基础依赖包..."
|
||||
pip3 install --user fastapi uvicorn sqlalchemy pymysql redis python-jose passlib python-multipart pydantic pydantic-settings httpx python-dotenv loguru alembic bcrypt
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "✓ 依赖安装完成"
|
||||
|
||||
# 4. 配置环境变量
|
||||
echo "4. 配置环境变量..."
|
||||
if [ ! -f ".env" ]; then
|
||||
echo "创建默认 .env 文件..."
|
||||
cat > .env << EOF
|
||||
# 基础配置
|
||||
ENVIRONMENT=production
|
||||
DEBUG=false
|
||||
|
||||
# 数据库配置
|
||||
DATABASE_URL=mysql+pymysql://用户名:密码@localhost:3306/数据库名
|
||||
|
||||
# Redis配置
|
||||
REDIS_URL=redis://localhost:6379
|
||||
|
||||
# JWT配置
|
||||
JWT_SECRET_KEY=your-super-secret-jwt-key-change-in-production-$(date +%s)
|
||||
JWT_ALGORITHM=HS256
|
||||
JWT_EXPIRE_MINUTES=30
|
||||
|
||||
# 文件上传配置
|
||||
UPLOAD_DIR=uploads
|
||||
MAX_FILE_SIZE=10485760
|
||||
|
||||
# CORS配置
|
||||
ALLOWED_HOSTS=["*"]
|
||||
EOF
|
||||
echo "✓ 已创建默认 .env 文件"
|
||||
echo "请编辑 .env 文件配置数据库连接等参数"
|
||||
else
|
||||
echo "✓ .env 文件已存在"
|
||||
fi
|
||||
|
||||
# 5. 创建启动脚本
|
||||
echo "5. 创建启动脚本..."
|
||||
cat > start_service.sh << 'STARTEOF'
|
||||
#!/bin/bash
|
||||
# 云盘后端启动脚本
|
||||
|
||||
# 进入脚本所在目录
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
# 检查环境文件
|
||||
if [ ! -f ".env" ]; then
|
||||
echo "错误: .env 文件不存在"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 创建必要目录
|
||||
mkdir -p logs uploads
|
||||
|
||||
# 启动服务
|
||||
echo "启动云盘后端服务..."
|
||||
echo "服务地址: http://localhost:8002"
|
||||
echo "API文档: http://localhost:8002/docs"
|
||||
echo "按 Ctrl+C 停止服务"
|
||||
echo ""
|
||||
|
||||
python3 main.py
|
||||
STARTEOF
|
||||
|
||||
chmod +x start_service.sh
|
||||
echo "✓ 启动脚本创建完成: start_service.sh"
|
||||
|
||||
# 6. 创建停止脚本
|
||||
echo "6. 创建停止脚本..."
|
||||
cat > stop_service.sh << 'STOPEOF'
|
||||
#!/bin/bash
|
||||
# 云盘后端停止脚本
|
||||
|
||||
echo "停止云盘后端服务..."
|
||||
pkill -f "python3 main.py" || echo "服务未运行"
|
||||
echo "服务已停止"
|
||||
STOPEOF
|
||||
|
||||
chmod +x stop_service.sh
|
||||
echo "✓ 停止脚本创建完成: stop_service.sh"
|
||||
|
||||
# 7. 创建状态检查脚本
|
||||
echo "7. 创建状态检查脚本..."
|
||||
cat > check_status.sh << 'STATUSEOF'
|
||||
#!/bin/bash
|
||||
# 云盘后端状态检查脚本
|
||||
|
||||
if pgrep -f "python3 main.py" > /dev/null; then
|
||||
echo "✓ 云盘后端服务正在运行"
|
||||
echo "进程ID: $(pgrep -f 'python3 main.py')"
|
||||
echo "端口: 8002"
|
||||
echo "服务地址: http://localhost:8002"
|
||||
echo "API文档: http://localhost:8002/docs"
|
||||
|
||||
# 测试健康检查
|
||||
if command -v curl &> /dev/null; then
|
||||
if curl -s http://localhost:8002/api/v1/health > /dev/null; then
|
||||
echo "✓ 服务响应正常"
|
||||
else
|
||||
echo "⚠ 服务运行但可能有问题"
|
||||
fi
|
||||
else
|
||||
echo "⚠ curl命令不可用,无法测试服务响应"
|
||||
fi
|
||||
else
|
||||
echo "✗ 云盘后端服务未运行"
|
||||
echo "启动服务: ./start_service.sh"
|
||||
fi
|
||||
STATUSEOF
|
||||
|
||||
chmod +x check_status.sh
|
||||
echo "✓ 状态检查脚本创建完成: check_status.sh"
|
||||
|
||||
# 8. 完成提示
|
||||
echo ""
|
||||
echo "=== 快速部署完成 ==="
|
||||
echo "当前目录: $(pwd)"
|
||||
echo ""
|
||||
echo "管理命令:"
|
||||
echo "1. 启动服务: ./start_service.sh"
|
||||
echo "2. 停止服务: ./stop_service.sh"
|
||||
echo "3. 查看状态: ./check_status.sh"
|
||||
echo ""
|
||||
echo "访问地址:"
|
||||
echo "- 服务地址: http://localhost:8002"
|
||||
echo "- API文档: http://localhost:8002/docs"
|
||||
echo "- 健康检查: http://localhost:8002/api/v1/health"
|
||||
echo ""
|
||||
echo "配置文件: .env"
|
||||
echo "日志目录: logs/"
|
||||
echo "上传目录: uploads/"
|
||||
echo ""
|
||||
echo "注意: 请确保数据库和Redis服务已启动并正确配置"
|
||||
|
||||
# 9. 自动启动服务
|
||||
echo ""
|
||||
echo "=== 正在启动服务 ==="
|
||||
echo "启动云盘后端服务..."
|
||||
./start_service.sh
|
||||
Reference in New Issue
Block a user