5.21冲刺

第10天
昨天的成就: 完成了系统性能优化,添加了连接池配置和响应缓存策略,撰写了DEPLOYMENT-CHECKLIST.md部署清单
遇到的困难: HttpClient连接复用需要正确关闭response避免资源泄漏
今天的任务: 准备生产环境部署脚本
markdown

DEPLOYMENT-CHECKLIST.md

生产环境部署检查清单

部署前检查

配置检查

构建检查

Tomcat 配置

server.xml 示例配置

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           compression="on"
           compressionMinSize="2048"
           compressableMimeType="text/html,text/xml,text/plain,application/json"/>
JVM 参数建议
bash
export CATALINA_OPTS="-Xms1g -Xmx2g -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
安全加固
 修改 Tomcat 默认管理员密码
 禁用 Tomcat 管理界面(生产环境)
 配置 HTTPS(使用 Let's Encrypt 或其他证书)
 限制 API 访问频率(防止滥用)
 配置防火墙规则(只开放必要端口)
监控与日志
 配置日志轮转(防止日志文件过大)
 设置日志保留期限(建议30天)
 配置应用监控(Prometheus + Grafana 或类似工具)
 设置告警阈值(CPU、内存、响应时间)
日志配置示例(logging.properties)
properties
handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

org.apache.juli.FileHandler.level = INFO
org.apache.juli.FileHandler.directory = ${catalina.base}/logs
org.apache.juli.FileHandler.prefix = sunwukong-generator.
org.apache.juli.FileHandler.maxDays = 30
备份策略
 定期备份配置文件
 定期备份生成的图片/视频(如有存储)
 记录部署版本和变更日志
回滚计划
 保留上一个版本的 WAR 包
 记录回滚步骤
 测试回滚流程
回滚步骤
停止 Tomcat:./bin/shutdown.sh
删除当前 WAR:rm webapps/sunwukong-generator.war
删除解压目录:rm -rf webapps/sunwukong-generator
复制旧版本 WAR:cp backup/sunwukong-generator-v1.0.war webapps/
启动 Tomcat:./bin/startup.sh
性能测试
 使用 JMeter 或 ab 进行压力测试
 验证并发用户数下的响应时间
 检查内存泄漏(使用 jmap/jstat)
压力测试命令
bash
# 使用 Apache Bench
ab -n 100 -c 10 http://localhost:8080/sunwukong-generator/

# 预期结果
# Requests per second: > 50
# Time per request: < 100ms(不含AI生成时间)
上线检查
 域名已解析到服务器IP
 HTTPS 证书已配置并验证
 CDN 已配置(如需要)
 监控系统已上线
 告警通知已配置(邮件/短信)
文档交付
 README.md 已更新
 ARCHITECTURE.md 已完成
 API 文档已提供
 运维手册已编写
部署负责人:
部署日期:
版本号: v1.0.0
plaintext

```bash
#!/bin/bash
# deploy.sh - 自动化部署脚本

set -e

echo "======================================"
echo "Sun Wukong Generator 部署脚本"
echo "======================================"

# 配置变量
TOMCAT_HOME="/opt/tomcat9"
WAR_FILE="target/sunwukong-generator.war"
BACKUP_DIR="$TOMCAT_HOME/backup"

# 检查 WAR 文件是否存在
if [ ! -f "$WAR_FILE" ]; then
    echo "错误: WAR 文件不存在,请先执行 mvn package"
    exit 1
fi

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

# 备份当前版本
if [ -f "$TOMCAT_HOME/webapps/sunwukong-generator.war" ]; then
    TIMESTAMP=$(date +%Y%m%d_%H%M%S)
    cp "$TOMCAT_HOME/webapps/sunwukong-generator.war" \
       "$BACKUP_DIR/sunwukong-generator_$TIMESTAMP.war"
    echo "✓ 已备份当前版本到 $BACKUP_DIR"
fi

# 停止 Tomcat
echo "正在停止 Tomcat..."
$TOMCAT_HOME/bin/shutdown.sh
sleep 5

# 删除旧文件
rm -f "$TOMCAT_HOME/webapps/sunwukong-generator.war"
rm -rf "$TOMCAT_HOME/webapps/sunwukong-generator"

# 部署新版本
cp "$WAR_FILE" "$TOMCAT_HOME/webapps/"
echo "✓ 已部署新版本"

# 启动 Tomcat
echo "正在启动 Tomcat..."
$TOMCAT_HOME/bin/startup.sh

# 等待启动
echo "等待应用启动..."
sleep 10

# 健康检查
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" \
    http://localhost:8080/sunwukong-generator/)

if [ "$HTTP_CODE" -eq 200 ]; then
    echo "======================================"
    echo "✓ 部署成功!"
    echo "访问地址: http://localhost:8080/sunwukong-generator"
    echo "======================================"
else
    echo "======================================"
    echo "✗ 部署失败!HTTP 状态码: $HTTP_CODE"
    echo "请查看日志: $TOMCAT_HOME/logs/catalina.out"
    echo "======================================"
    exit 1
fi
posted @ 2026-06-18 20:16  sas1996  阅读(15)  评论(0)    收藏  举报