86 lines
2.2 KiB
Bash
86 lines
2.2 KiB
Bash
#!/bin/bash
|
|
# AI MIP 服务部署脚本
|
|
# 用法: sudo bash deploy.sh
|
|
|
|
set -e
|
|
|
|
echo "=========================================="
|
|
echo " AI MIP 服务部署脚本"
|
|
echo "=========================================="
|
|
|
|
# 配置变量
|
|
PROJECT_DIR="/opt/ai_mip"
|
|
SERVICE_NAME="ai_mip"
|
|
SERVICE_FILE="${SERVICE_NAME}.service"
|
|
LOG_DIR="/var/log/ai_mip"
|
|
VENV_DIR="${PROJECT_DIR}/venv"
|
|
USER="www-data"
|
|
GROUP="www-data"
|
|
|
|
# 检查是否root权限
|
|
if [[ $EUID -ne 0 ]]; then
|
|
echo "❌ 错误: 请使用 sudo 运行此脚本"
|
|
exit 1
|
|
fi
|
|
|
|
echo ""
|
|
echo "📦 步骤1: 创建项目目录"
|
|
mkdir -p ${PROJECT_DIR}
|
|
mkdir -p ${LOG_DIR}
|
|
echo "✅ 目录创建完成"
|
|
|
|
echo ""
|
|
echo "📂 步骤2: 复制项目文件"
|
|
echo "请确保当前目录是项目根目录"
|
|
cp -r ./* ${PROJECT_DIR}/
|
|
echo "✅ 文件复制完成"
|
|
|
|
echo ""
|
|
echo "🐍 步骤3: 创建Python虚拟环境"
|
|
if [ ! -d "${VENV_DIR}" ]; then
|
|
python3 -m venv ${VENV_DIR}
|
|
echo "✅ 虚拟环境创建完成"
|
|
else
|
|
echo "⚠️ 虚拟环境已存在,跳过创建"
|
|
fi
|
|
|
|
echo ""
|
|
echo "📦 步骤4: 安装依赖"
|
|
${VENV_DIR}/bin/pip install --upgrade pip
|
|
${VENV_DIR}/bin/pip install -r ${PROJECT_DIR}/requirements.txt
|
|
echo "✅ 依赖安装完成"
|
|
|
|
echo ""
|
|
echo "🔐 步骤5: 设置权限"
|
|
chown -R ${USER}:${GROUP} ${PROJECT_DIR}
|
|
chown -R ${USER}:${GROUP} ${LOG_DIR}
|
|
chmod +x ${PROJECT_DIR}/main.py
|
|
echo "✅ 权限设置完成"
|
|
|
|
echo ""
|
|
echo "⚙️ 步骤6: 安装systemd服务"
|
|
cp ${PROJECT_DIR}/${SERVICE_FILE} /etc/systemd/system/
|
|
systemctl daemon-reload
|
|
echo "✅ 服务文件已安装"
|
|
|
|
echo ""
|
|
echo "🚀 步骤7: 启动服务"
|
|
systemctl enable ${SERVICE_NAME}
|
|
systemctl restart ${SERVICE_NAME}
|
|
echo "✅ 服务已启动"
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo " 部署完成!"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "📋 常用命令:"
|
|
echo " 查看状态: sudo systemctl status ${SERVICE_NAME}"
|
|
echo " 查看日志: sudo journalctl -u ${SERVICE_NAME} -f"
|
|
echo " 查看服务日志: tail -f ${LOG_DIR}/service.log"
|
|
echo " 查看错误日志: tail -f ${LOG_DIR}/error.log"
|
|
echo " 重启服务: sudo systemctl restart ${SERVICE_NAME}"
|
|
echo " 停止服务: sudo systemctl stop ${SERVICE_NAME}"
|
|
echo " 健康检查: curl http://localhost:8899/health"
|
|
echo ""
|