CostPrediction/docs/dev/deployment.md

3.8 KiB

装备成本估算系统部署指南

一、系统打包

1. 创建部署包结构

mkdir -p deploy/equipment_cost_system/{backend,frontend,docs}

2. 准备部署文件

2.1 后端文件

cd deploy/equipment_cost_system/backend
mkdir -p {src,scripts,config,data,logs,models}
cp -r ../../../src/* src/
cp ../../../requirements.txt ./
cp ../../../.env.example config/.env.template

2.2 前端文件

cd ../frontend
mkdir -p {src,public,dist}
cp -r ../../frontend/src/* src/
cp -r ../../frontend/public/* public/
cp ../../../frontend/package.json ./
cp ../../../frontend/vite.config.js ./
cp ../../../frontend/.env.production ./

2.3 复制文档

cd ../docs
cp -r ../../docs/deploy/* ./

2.4 创建部署脚本

touch scripts/{install.sh,start.sh,stop.sh}

3. 部署脚本内容

3.1 安装脚本 (install.sh)

#!/bin/bash

# 安装 Python 依赖
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

# 创建必要的目录
mkdir -p logs
mkdir -p data
mkdir -p models

# 配置文件
if [ ! -f config/.env ]; then
    cp config/.env.template config/.env
    echo "请修改 config/.env 中的配置"
fi

# 初始化数据库
read -p "请输入MySQL root密码: " mysqlpass
mysql -u root -p$mysqlpass < src/schema.sql

# 设置权限
chmod +x scripts/*.sh

3.2 启动脚本 (start.sh)

#!/bin/bash

# 激活虚拟环境
source venv/bin/activate

# 检查配置文件
if [ ! -f config/.env ]; then
    echo "错误: 配置文件不存在"
    exit 1
fi

# 启动服务
export $(cat config/.env | xargs)
gunicorn -w 4 -b 0.0.0.0:5001 "src.app:create_app()" --daemon

echo "服务已启动,访问 http://localhost:5001"

3.3 停止脚本 (stop.sh)

#!/bin/bash

# 查找并停止 gunicorn 进程
pkill -f gunicorn

echo "服务已停止"

4. 创建部署包

cd ..
tar -czf equipment_cost_system.tar.gz equipment_cost_system/

二、部署步骤

1. 系统要求

  • Linux 服务器 (推荐 Ubuntu 20.04+)
  • Python 3.8+
  • MySQL 8.0+

2. 安装部署

# 解压部署包
tar -xzf equipment_cost_system.tar.gz
cd equipment_cost_system

# 运行安装脚本
bash scripts/install.sh

# 修改配置文件
vim config/.env

# 启动服务
bash scripts/start.sh

3. 验证部署

# 检查服务状态
curl http://localhost:5001/api/

# 检查日志
tail -f logs/api.log

三、维护说明

1. 日常维护

# 查看日志
tail -f logs/api.log

# 备份数据库
mysqldump -u root -p equipment_cost_db > backup/$(date +%Y%m%d).sql

# 清理旧日志
find logs/ -name "*.log" -mtime +30 -delete

2. 更新部署

# 停止服务
bash scripts/stop.sh

# 备份数据
cp -r data data_backup_$(date +%Y%m%d)

# 更新代码
# ... 更新相关文件 ...

# 重启服务
bash scripts/start.sh

3. 故障处理

# 检查服务状态
ps aux | grep gunicorn

# 检查数据库连接
mysql -u root -p -e "show databases;"

# 重启服务
bash scripts/stop.sh
bash scripts/start.sh

四、安全建议

  1. 文件权限设置
# 设置适当的文件权限
chmod 755 scripts/*.sh
chmod 600 config/.env
chmod 700 logs models data
  1. 数据库安全
  • 使用强密码
  • 限制数据库访问IP
  • 定期备份数据
  1. 服务器配置
  • 配置防火墙规则
  • 启用 SSL/TLS
  • 定期更新系统

五、监控方案

1. 系统监控

# 检查CPU和内存使用
top -b -n 1

# 检查磁盘使用
df -h

# 检查网络连接
netstat -tunlp

2. 应用监控

# 检查API响应时间
curl -w "@curl-format.txt" -o /dev/null -s "http://localhost:5001/api/"

# 检查错误日志
grep "ERROR" logs/api.log

3. 告警设置

  • 配置日志告警
  • 设置资源使用阈值告警
  • 配置服务可用性监控