Files
jiangmingzhao-daily-report/DEPLOYMENT.md
jiangmingzhao 9b9ee273fc 初始提交:企业级日报系统完整代码
功能特性:
-  JWT用户认证系统
-  日报CRUD管理
-  三级权限控制
-  多维度搜索过滤
-  统计分析功能
-  评论互动系统
-  响应式Cool Admin界面
-  暗色主题支持

 技术栈:
- 后端:Django 4.2.7 + DRF + SimpleJWT
- 前端:Vue 3 + Element Plus + Pinia
- 数据库:SQLite/PostgreSQL
- 部署:Docker + Nginx

 包含内容:
- 完整的后端API代码
- 现代化前端界面
- 数据库迁移文件
- 部署脚本和文档
- 演示页面和测试工具
2025-09-13 14:35:15 +08:00

9.7 KiB
Raw Blame History

部署指南

本文档提供了企业级日报系统的详细部署指南包括开发环境、生产环境和Docker部署方式。

📋 系统要求

最低要求

  • 操作系统: Linux, macOS, Windows
  • Python: 3.8+
  • Node.js: 16+
  • 内存: 2GB+
  • 存储: 10GB+

推荐配置

  • 操作系统: Ubuntu 20.04 LTS / CentOS 8
  • Python: 3.11
  • Node.js: 18 LTS
  • 内存: 4GB+
  • 存储: 20GB+
  • 数据库: PostgreSQL 15+

🚀 快速部署

方式一:自动部署脚本

后端部署

cd backend
python deploy.py

前端部署

cd frontend
node deploy.js

方式二Docker部署推荐

# 克隆项目
git clone <项目地址>
cd daily-report-system

# 启动所有服务
docker-compose up -d

# 查看服务状态
docker-compose ps

# 查看日志
docker-compose logs -f

🔧 手动部署

1. 环境准备

安装Python环境

# Ubuntu/Debian
sudo apt update
sudo apt install python3 python3-pip python3-venv

# CentOS/RHEL
sudo yum install python3 python3-pip

# macOS
brew install python3

安装Node.js环境

# Ubuntu/Debian
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs

# CentOS/RHEL
curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
sudo yum install nodejs npm

# macOS
brew install node

2. 后端部署

创建虚拟环境

cd backend
python3 -m venv venv

# 激活虚拟环境
# Linux/Mac
source venv/bin/activate
# Windows
venv\Scripts\activate

安装依赖

pip install --upgrade pip
pip install -r requirements.txt

环境配置

# 复制环境变量文件
cp env.example .env

# 编辑环境变量
vim .env

环境变量配置:

# 基础配置
SECRET_KEY=your-very-secret-key-here-change-in-production
DEBUG=False
ALLOWED_HOSTS=your-domain.com,localhost,127.0.0.1

# 数据库配置生产环境推荐PostgreSQL
DATABASE_URL=postgresql://username:password@localhost:5432/daily_report

# 跨域配置
CORS_ALLOWED_ORIGINS=https://your-domain.com,http://localhost:3000

# 邮件配置(可选)
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_HOST_USER=your-email@gmail.com
EMAIL_HOST_PASSWORD=your-app-password
EMAIL_USE_TLS=True

数据库设置

# SQLite开发环境
python manage.py makemigrations
python manage.py migrate

# PostgreSQL生产环境
# 1. 安装PostgreSQL
sudo apt install postgresql postgresql-contrib

# 2. 创建数据库和用户
sudo -u postgres psql
CREATE DATABASE daily_report;
CREATE USER daily_report_user WITH PASSWORD 'your-password';
GRANT ALL PRIVILEGES ON DATABASE daily_report TO daily_report_user;
\q

# 3. 执行迁移
python manage.py makemigrations
python manage.py migrate

创建超级用户

# 方式1交互式创建
python manage.py createsuperuser

# 方式2使用脚本创建包含测试用户
python create_superuser.py

收集静态文件

python manage.py collectstatic --noinput

启动服务

# 开发环境
python manage.py runserver 0.0.0.0:8000

# 生产环境
pip install gunicorn
gunicorn config.wsgi:application --bind 0.0.0.0:8000 --workers 4

3. 前端部署

安装依赖

cd frontend
npm install

环境配置

# 创建环境变量文件
echo "VUE_APP_BASE_API=http://your-backend-domain.com/api" > .env.production

开发环境启动

npm run serve

生产环境构建

npm run build

Nginx配置

server {
    listen 80;
    server_name your-domain.com;
    root /path/to/frontend/dist;
    index index.html;

    # 静态资源缓存
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
    }

    # API代理
    location /api/ {
        proxy_pass http://localhost:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # SPA路由支持
    location / {
        try_files $uri $uri/ /index.html;
    }
}

🐳 Docker部署详解

1. 环境准备

# 安装Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# 安装Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

2. 配置文件调整

# 复制并编辑Docker Compose配置
cp docker-compose.yml docker-compose.prod.yml
vim docker-compose.prod.yml

关键配置项:

services:
  backend:
    environment:
      - DEBUG=False
      - SECRET_KEY=your-production-secret-key
      - DATABASE_URL=postgresql://user:pass@db:5432/daily_report
      - ALLOWED_HOSTS=your-domain.com
      - CORS_ALLOWED_ORIGINS=https://your-domain.com

3. SSL证书配置

# 创建SSL目录
mkdir -p ssl

# 使用Let's Encrypt获取证书
sudo apt install certbot
sudo certbot certonly --standalone -d your-domain.com

# 复制证书到项目目录
sudo cp /etc/letsencrypt/live/your-domain.com/fullchain.pem ssl/
sudo cp /etc/letsencrypt/live/your-domain.com/privkey.pem ssl/
sudo chown -R $USER:$USER ssl/

4. 启动服务

# 启动所有服务
docker-compose -f docker-compose.prod.yml up -d

# 查看服务状态
docker-compose ps

# 查看日志
docker-compose logs -f backend
docker-compose logs -f frontend

5. 数据备份

# 备份数据库
docker-compose exec db pg_dump -U daily_report_user daily_report > backup_$(date +%Y%m%d_%H%M%S).sql

# 恢复数据库
docker-compose exec -T db psql -U daily_report_user daily_report < backup.sql

🔒 安全配置

1. 防火墙设置

# Ubuntu UFW
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

# CentOS firewalld
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

2. SSL/TLS配置

# 自动续期证书
echo "0 12 * * * /usr/bin/certbot renew --quiet" | sudo crontab -

3. 数据库安全

# PostgreSQL安全配置
sudo -u postgres psql
ALTER USER daily_report_user WITH PASSWORD 'new-strong-password';
\q

# 限制数据库访问
sudo vim /etc/postgresql/15/main/pg_hba.conf
# 添加host daily_report daily_report_user 127.0.0.1/32 md5

📊 监控和维护

1. 日志管理

# 查看应用日志
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log

# Docker日志
docker-compose logs -f --tail=100 backend
docker-compose logs -f --tail=100 frontend

2. 性能监控

# 安装监控工具
pip install django-debug-toolbar  # 开发环境
pip install sentry-sdk  # 错误监控

# 系统监控
sudo apt install htop iotop nethogs

3. 备份策略

#!/bin/bash
# backup.sh - 自动备份脚本

DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backup/daily_report"

# 创建备份目录
mkdir -p $BACKUP_DIR

# 备份数据库
docker-compose exec -T db pg_dump -U daily_report_user daily_report > $BACKUP_DIR/db_$DATE.sql

# 备份媒体文件
tar -czf $BACKUP_DIR/media_$DATE.tar.gz backend/media/

# 清理7天前的备份
find $BACKUP_DIR -name "*.sql" -mtime +7 -delete
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete

echo "Backup completed: $DATE"

4. 自动更新

#!/bin/bash
# update.sh - 自动更新脚本

# 拉取最新代码
git pull origin main

# 更新后端
cd backend
pip install -r requirements.txt
python manage.py migrate
python manage.py collectstatic --noinput

# 更新前端
cd ../frontend
npm install
npm run build

# 重启服务
docker-compose restart backend frontend

echo "Update completed"

🚨 故障排除

常见问题

1. 后端启动失败

# 检查日志
python manage.py check
python manage.py runserver --traceback

# 检查数据库连接
python manage.py dbshell

2. 前端构建失败

# 清理缓存
npm cache clean --force
rm -rf node_modules package-lock.json
npm install

# 检查Node.js版本
node --version
npm --version

3. Docker服务异常

# 查看容器状态
docker ps -a

# 查看容器日志
docker logs daily_report_backend
docker logs daily_report_frontend

# 重启服务
docker-compose restart

4. 数据库连接问题

# 检查数据库状态
sudo systemctl status postgresql

# 检查连接
psql -h localhost -U daily_report_user -d daily_report

# 重置数据库
python manage.py flush
python manage.py migrate

性能优化

1. 数据库优化

-- 创建索引
CREATE INDEX idx_daily_report_date ON daily_report_dailyreport(report_date);
CREATE INDEX idx_daily_report_user ON daily_report_dailyreport(user_id);
CREATE INDEX idx_daily_report_created ON daily_report_dailyreport(created_at);

-- 分析查询性能
EXPLAIN ANALYZE SELECT * FROM daily_report_dailyreport WHERE report_date >= '2024-01-01';

2. 缓存配置

# settings.py
CACHES = {
    'default': {
        'BACKEND': 'django_redis.cache.RedisCache',
        'LOCATION': 'redis://127.0.0.1:6379/1',
        'OPTIONS': {
            'CLIENT_CLASS': 'django_redis.client.DefaultClient',
        }
    }
}

3. 静态文件优化

# 启用Gzip压缩
# 配置CDN
# 使用WebP图片格式

📞 技术支持

如果在部署过程中遇到问题:

  1. 查看 README.md 了解基本信息
  2. 检查 CHANGELOG.md 查看更新记录
  3. 提交 GitHub Issue
  4. 联系技术支持团队

🎉 祝您部署成功!如有问题,欢迎反馈。