Files
AIGC/demo/DEPLOYMENT_CHECKLIST.md
AIGC Developer 1e71ae6a26 feat: 系统优化和功能完善
主要更新:
- 调整并发配置为50人(数据库连接池30,Tomcat线程150,异步线程池5/20)
- 实现无界阻塞队列(LinkedBlockingQueue)任务处理
- 实现分镜视频保存功能(保存到uploads目录)
- 统一管理页面导航栏和右上角样式
- 添加日活用户统计功能
- 优化视频拼接和保存逻辑
- 添加部署文档和快速部署指南
- 更新.gitignore排除敏感配置文件
2025-11-07 19:09:50 +08:00

14 KiB
Raw Blame History

🚀 项目上线部署准备清单

本文档提供了项目上线前的完整准备清单和部署步骤。

📋 一、服务器环境准备

1.1 服务器要求

最低配置:

  • CPU: 4核
  • 内存: 8GB
  • 磁盘: 100GB SSD
  • 带宽: 10Mbps

推荐配置支持50人并发

  • CPU: 4核
  • 内存: 8GB
  • 磁盘: 100GB+ SSD
  • 带宽: 20Mbps

1.2 操作系统

  • Linux: Ubuntu 20.04+ / CentOS 7+ / Debian 11+
  • Windows Server: Windows Server 2019+

1.3 必需软件安装

# Java 21 (必需)
sudo apt update
sudo apt install openjdk-21-jdk

# 验证安装
java -version

# MySQL 8.0+ (必需)
sudo apt install mysql-server
sudo systemctl start mysql
sudo systemctl enable mysql

# FFmpeg (视频拼接功能需要)
# Ubuntu/Debian
sudo apt install ffmpeg

# CentOS/RHEL
sudo yum install epel-release
sudo yum install ffmpeg

# 验证安装
ffmpeg -version

# Nginx (反向代理,推荐)
sudo apt install nginx

# Maven (构建项目)
sudo apt install maven

1.4 目录结构准备

# 创建应用目录
sudo mkdir -p /app/aigc-platform
sudo mkdir -p /app/aigc-platform/logs
sudo mkdir -p /app/aigc-platform/uploads
sudo mkdir -p /app/aigc-platform/temp
sudo mkdir -p /app/aigc-platform/config

# 设置权限
sudo chown -R $USER:$USER /app/aigc-platform
chmod -R 755 /app/aigc-platform

🗄️ 二、数据库准备

2.1 创建数据库

-- 登录MySQL
mysql -u root -p

-- 创建数据库
CREATE DATABASE aigc_platform CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 创建用户(推荐)
CREATE USER 'aigc_user'@'localhost' IDENTIFIED BY '强密码';
GRANT ALL PRIVILEGES ON aigc_platform.* TO 'aigc_user'@'localhost';
FLUSH PRIVILEGES;

-- 退出
EXIT;

2.2 数据库配置优化

编辑 /etc/mysql/mysql.conf.d/mysqld.cnf:

[mysqld]
# 字符集
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

# 连接数
max_connections=500
max_user_connections=400

# 缓冲池根据内存调整建议为内存的50-70%
# 8GB内存服务器建议设置为2-4G
innodb_buffer_pool_size=2G

# 日志
slow_query_log=1
slow_query_log_file=/var/log/mysql/slow-query.log
long_query_time=2

重启MySQL:

sudo systemctl restart mysql

⚙️ 三、环境变量配置

3.1 创建环境变量文件

创建 /app/aigc-platform/config/.env:

# 数据库配置
export DB_URL="jdbc:mysql://localhost:3306/aigc_platform?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true"
export DB_USERNAME="aigc_user"
export DB_PASSWORD="你的数据库密码"

# JWT配置
export JWT_SECRET="生成一个至少128位的随机字符串"
export JWT_EXPIRATION="604800000"

# AI API配置可通过管理页面修改但建议先配置
export AI_API_BASE_URL="https://ai.comfly.chat"
export AI_API_KEY="你的Comfly API密钥"
export AI_IMAGE_API_BASE_URL="https://ai.comfly.chat"
export AI_IMAGE_API_KEY="你的Comfly API密钥文生图"

# 支付宝配置(如需支付功能)
export ALIPAY_APP_ID="你的支付宝应用ID"
export ALIPAY_PRIVATE_KEY="你的应用私钥RSA2格式完整内容"
export ALIPAY_PUBLIC_KEY="支付宝公钥RSA2格式完整内容"
export ALIPAY_NOTIFY_URL="https://yourdomain.com/api/payments/alipay/notify"
export ALIPAY_RETURN_URL="https://yourdomain.com/api/payments/alipay/return"

# 腾讯云SES配置如需邮件功能
export TENCENT_SES_SECRET_ID="你的SecretId"
export TENCENT_SES_SECRET_KEY="你的SecretKey"
export TENCENT_SES_FROM_EMAIL="你的发件邮箱"
export TENCENT_SES_TEMPLATE_ID="你的邮件模板ID"

# 文件路径配置
export FFMPEG_PATH="/usr/bin/ffmpeg"
export TEMP_DIR="/app/aigc-platform/temp"
export UPLOAD_PATH="/app/aigc-platform/uploads"
export LOG_FILE_PATH="/app/aigc-platform/logs/application.log"

3.2 生成JWT密钥

# 方法1使用OpenSSL
openssl rand -base64 64

# 方法2使用Python
python3 -c "import secrets; print(secrets.token_urlsafe(64))"

# 方法3在线生成
# 访问 https://www.random.org/strings/

3.3 加载环境变量

# 编辑 ~/.bashrc 或 ~/.profile
echo "source /app/aigc-platform/config/.env" >> ~/.bashrc
source ~/.bashrc

# 或创建 systemd service 时直接加载

📦 四、项目构建与部署

4.1 构建项目

# 进入项目目录
cd /path/to/AIGC/demo

# 清理并打包(跳过测试)
./mvnw clean package -DskipTests

# 或使用Maven
mvn clean package -DskipTests

# 打包后的JAR文件位置
# target/demo-0.0.1-SNAPSHOT.jar

4.2 上传文件到服务器

# 使用SCP上传
scp target/demo-0.0.1-SNAPSHOT.jar user@server:/app/aigc-platform/

# 或使用FTP/SFTP工具

4.3 前端构建

# 进入前端目录
cd frontend

# 安装依赖(如果还没有)
npm install

# 构建生产版本
npm run build

# 构建后的文件在 dist/ 目录
# 需要配置Nginx指向 dist/ 目录

🔧 五、应用配置

5.1 创建生产环境配置文件

在服务器上创建 /app/aigc-platform/config/application-prod.properties:

# 激活生产环境配置
spring.profiles.active=prod

# 数据库配置(使用环境变量)
spring.datasource.url=${DB_URL}
spring.datasource.username=${DB_USERNAME}
spring.datasource.password=${DB_PASSWORD}

# JWT配置
jwt.secret=${JWT_SECRET}
jwt.expiration=${JWT_EXPIRATION:604800000}

# 支付宝配置
alipay.app-id=${ALIPAY_APP_ID}
alipay.private-key=${ALIPAY_PRIVATE_KEY}
alipay.public-key=${ALIPAY_PUBLIC_KEY}
alipay.gateway-url=https://openapi.alipay.com/gateway.do
alipay.notify-url=${ALIPAY_NOTIFY_URL}
alipay.return-url=${ALIPAY_RETURN_URL}

# 腾讯云SES配置
tencent.ses.secret-id=${TENCENT_SES_SECRET_ID}
tencent.ses.secret-key=${TENCENT_SES_SECRET_KEY}
tencent.ses.from-email=${TENCENT_SES_FROM_EMAIL}
tencent.ses.template-id=${TENCENT_SES_TEMPLATE_ID}

# 文件路径
app.ffmpeg.path=${FFMPEG_PATH:ffmpeg}
app.temp.dir=${TEMP_DIR:./temp}
app.upload.path=${UPLOAD_PATH:./uploads}

# 日志
logging.file.name=${LOG_FILE_PATH:./logs/application.log}

5.2 创建Systemd服务Linux

创建 /etc/systemd/system/aigc-platform.service:

[Unit]
Description=AIGC Platform Application
After=network.target mysql.service

[Service]
Type=simple
User=your-user
WorkingDirectory=/app/aigc-platform
EnvironmentFile=/app/aigc-platform/config/.env
ExecStart=/usr/bin/java -jar \
  -Xms1g \
  -Xmx4g \
  -XX:+UseG1GC \
  -XX:MaxGCPauseMillis=200 \
  -Dspring.profiles.active=prod \
  -Dspring.config.location=file:/app/aigc-platform/config/application-prod.properties \
  /app/aigc-platform/demo-0.0.1-SNAPSHOT.jar
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=aigc-platform

[Install]
WantedBy=multi-user.target

启动服务:

sudo systemctl daemon-reload
sudo systemctl enable aigc-platform
sudo systemctl start aigc-platform
sudo systemctl status aigc-platform

查看日志:

sudo journalctl -u aigc-platform -f

🌐 六、Nginx反向代理配置

6.1 创建Nginx配置

创建 /etc/nginx/sites-available/aigc-platform:

upstream aigc_backend {
    server localhost:8080;
    keepalive 32;
}

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;

    # 重定向到HTTPS
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name yourdomain.com www.yourdomain.com;

    # SSL证书配置
    ssl_certificate /path/to/your/cert.pem;
    ssl_certificate_key /path/to/your/key.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    # 前端静态文件
    root /path/to/frontend/dist;
    index index.html;

    # 前端路由
    location / {
        try_files $uri $uri/ /index.html;
    }

    # 后端API代理
    location /api/ {
        proxy_pass http://aigc_backend;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        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;
        proxy_cache_bypass $http_upgrade;
        
        # 超时设置
        proxy_connect_timeout 300s;
        proxy_send_timeout 300s;
        proxy_read_timeout 300s;
    }

    # 文件上传代理(支持大文件)
    location /uploads/ {
        proxy_pass http://aigc_backend;
        proxy_request_buffering off;
        client_max_body_size 500M;
        proxy_connect_timeout 300s;
        proxy_send_timeout 300s;
        proxy_read_timeout 300s;
    }

    # 日志
    access_log /var/log/nginx/aigc-platform-access.log;
    error_log /var/log/nginx/aigc-platform-error.log;
}

启用配置:

sudo ln -s /etc/nginx/sites-available/aigc-platform /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

6.2 SSL证书Let's Encrypt

# 安装Certbot
sudo apt install certbot python3-certbot-nginx

# 获取证书
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

# 自动续期
sudo certbot renew --dry-run

🔒 七、安全配置

7.1 防火墙配置

# UFW (Ubuntu)
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

# Firewalld (CentOS)
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

7.2 数据库安全

-- 删除匿名用户
DELETE FROM mysql.user WHERE User='';

-- 禁止root远程登录如果不需要
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');

-- 刷新权限
FLUSH PRIVILEGES;

7.3 文件权限

# 配置文件权限
chmod 600 /app/aigc-platform/config/.env
chmod 600 /app/aigc-platform/config/application-prod.properties

# 日志目录权限
chmod 755 /app/aigc-platform/logs

📊 八、监控与日志

8.1 日志管理

# 配置日志轮转
sudo nano /etc/logrotate.d/aigc-platform

# 内容:
/app/aigc-platform/logs/*.log {
    daily
    rotate 30
    compress
    delaycompress
    missingok
    notifempty
    create 0644 your-user your-user
}

8.2 监控脚本

创建 /app/aigc-platform/scripts/health-check.sh:

#!/bin/bash
HEALTH_URL="http://localhost:8080/api/health"
RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" $HEALTH_URL)

if [ $RESPONSE -ne 200 ]; then
    echo "Health check failed: $RESPONSE"
    systemctl restart aigc-platform
fi

添加到crontab:

# 每5分钟检查一次
*/5 * * * * /app/aigc-platform/scripts/health-check.sh

九、上线前检查清单

9.1 配置检查

  • 数据库连接配置正确
  • JWT密钥已生成并配置
  • AI API密钥已配置
  • 支付宝配置(如需要)
  • 腾讯云SES配置如需要
  • FFmpeg路径正确
  • 文件上传目录权限正确
  • 日志目录权限正确

9.2 功能测试

  • 用户注册/登录
  • 文生视频功能
  • 图生视频功能
  • 分镜视频功能
  • 支付功能(如需要)
  • 邮件发送(如需要)
  • 文件上传/下载
  • 视频拼接功能

9.3 性能测试

  • 并发测试建议使用JMeter
  • 数据库连接池测试
  • 内存使用监控
  • CPU使用监控
  • 磁盘空间监控

9.4 安全检查

  • 防火墙已配置
  • SSL证书已安装
  • 敏感信息使用环境变量
  • 数据库用户权限最小化
  • 文件权限已设置

9.5 备份策略

  • 数据库自动备份脚本
  • 文件上传目录备份
  • 配置文件备份
  • 备份恢复测试

🔄 十、部署流程

10.1 首次部署

# 1. 准备服务器环境
# 2. 安装必需软件
# 3. 配置数据库
# 4. 配置环境变量
# 5. 构建项目
# 6. 上传文件
# 7. 配置Nginx
# 8. 启动服务
# 9. 测试功能
# 10. 配置监控

10.2 更新部署

# 1. 备份当前版本
cp demo-0.0.1-SNAPSHOT.jar demo-0.0.1-SNAPSHOT.jar.backup

# 2. 停止服务
sudo systemctl stop aigc-platform

# 3. 上传新版本
scp target/demo-0.0.1-SNAPSHOT.jar user@server:/app/aigc-platform/

# 4. 启动服务
sudo systemctl start aigc-platform

# 5. 检查状态
sudo systemctl status aigc-platform
sudo journalctl -u aigc-platform -f

🆘 十一、常见问题排查

11.1 应用无法启动

# 查看日志
sudo journalctl -u aigc-platform -n 100

# 检查Java版本
java -version

# 检查端口占用
sudo netstat -tlnp | grep 8080

# 检查环境变量
env | grep DB_

11.2 数据库连接失败

# 测试数据库连接
mysql -h localhost -u aigc_user -p aigc_platform

# 检查MySQL服务
sudo systemctl status mysql

# 检查防火墙
sudo ufw status

11.3 文件上传失败

# 检查目录权限
ls -la /app/aigc-platform/uploads

# 检查磁盘空间
df -h

# 检查Nginx配置
sudo nginx -t

📞 十二、技术支持

如遇到问题,请检查:

  1. 应用日志:/app/aigc-platform/logs/application.log
  2. 系统日志:sudo journalctl -u aigc-platform
  3. Nginx日志/var/log/nginx/aigc-platform-error.log
  4. MySQL日志/var/log/mysql/error.log

📝 十三、维护计划

日常维护

  • 每日: 检查日志、监控系统资源
  • 每周: 检查备份、清理临时文件
  • 每月: 更新依赖、安全补丁

定期任务

  • 数据库备份: 每天凌晨2点
  • 日志清理: 每天凌晨4点
  • 任务清理: 每天凌晨4点已配置定时任务

祝部署顺利! 🎉