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

510 lines
9.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 部署指南
本文档提供了企业级日报系统的详细部署指南包括开发环境、生产环境和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+
## 🚀 快速部署
### 方式一:自动部署脚本
#### 后端部署
```bash
cd backend
python deploy.py
```
#### 前端部署
```bash
cd frontend
node deploy.js
```
### 方式二Docker部署推荐
```bash
# 克隆项目
git clone <项目地址>
cd daily-report-system
# 启动所有服务
docker-compose up -d
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f
```
## 🔧 手动部署
### 1. 环境准备
#### 安装Python环境
```bash
# 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环境
```bash
# 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. 后端部署
#### 创建虚拟环境
```bash
cd backend
python3 -m venv venv
# 激活虚拟环境
# Linux/Mac
source venv/bin/activate
# Windows
venv\Scripts\activate
```
#### 安装依赖
```bash
pip install --upgrade pip
pip install -r requirements.txt
```
#### 环境配置
```bash
# 复制环境变量文件
cp env.example .env
# 编辑环境变量
vim .env
```
环境变量配置:
```bash
# 基础配置
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
```
#### 数据库设置
```bash
# 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
```
#### 创建超级用户
```bash
# 方式1交互式创建
python manage.py createsuperuser
# 方式2使用脚本创建包含测试用户
python create_superuser.py
```
#### 收集静态文件
```bash
python manage.py collectstatic --noinput
```
#### 启动服务
```bash
# 开发环境
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. 前端部署
#### 安装依赖
```bash
cd frontend
npm install
```
#### 环境配置
```bash
# 创建环境变量文件
echo "VUE_APP_BASE_API=http://your-backend-domain.com/api" > .env.production
```
#### 开发环境启动
```bash
npm run serve
```
#### 生产环境构建
```bash
npm run build
```
#### Nginx配置
```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. 环境准备
```bash
# 安装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. 配置文件调整
```bash
# 复制并编辑Docker Compose配置
cp docker-compose.yml docker-compose.prod.yml
vim docker-compose.prod.yml
```
关键配置项:
```yaml
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证书配置
```bash
# 创建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. 启动服务
```bash
# 启动所有服务
docker-compose -f docker-compose.prod.yml up -d
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f backend
docker-compose logs -f frontend
```
### 5. 数据备份
```bash
# 备份数据库
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. 防火墙设置
```bash
# 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配置
```bash
# 自动续期证书
echo "0 12 * * * /usr/bin/certbot renew --quiet" | sudo crontab -
```
### 3. 数据库安全
```bash
# 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. 日志管理
```bash
# 查看应用日志
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. 性能监控
```bash
# 安装监控工具
pip install django-debug-toolbar # 开发环境
pip install sentry-sdk # 错误监控
# 系统监控
sudo apt install htop iotop nethogs
```
### 3. 备份策略
```bash
#!/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. 自动更新
```bash
#!/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. 后端启动失败
```bash
# 检查日志
python manage.py check
python manage.py runserver --traceback
# 检查数据库连接
python manage.py dbshell
```
#### 2. 前端构建失败
```bash
# 清理缓存
npm cache clean --force
rm -rf node_modules package-lock.json
npm install
# 检查Node.js版本
node --version
npm --version
```
#### 3. Docker服务异常
```bash
# 查看容器状态
docker ps -a
# 查看容器日志
docker logs daily_report_backend
docker logs daily_report_frontend
# 重启服务
docker-compose restart
```
#### 4. 数据库连接问题
```bash
# 检查数据库状态
sudo systemctl status postgresql
# 检查连接
psql -h localhost -U daily_report_user -d daily_report
# 重置数据库
python manage.py flush
python manage.py migrate
```
### 性能优化
#### 1. 数据库优化
```sql
-- 创建索引
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. 缓存配置
```python
# 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. 静态文件优化
```bash
# 启用Gzip压缩
# 配置CDN
# 使用WebP图片格式
```
## 📞 技术支持
如果在部署过程中遇到问题:
1. 查看 [README.md](README.md) 了解基本信息
2. 检查 [CHANGELOG.md](CHANGELOG.md) 查看更新记录
3. 提交 GitHub Issue
4. 联系技术支持团队
---
🎉 祝您部署成功!如有问题,欢迎反馈。