# Spring Boot应用部署到Tomcat 10.1.48指南(含性能优化) ## 准备工作 1. **确认构建产物**: - 已生成WAR文件:`web-0.0.1-SNAPSHOT.war`,位于`target`目录下 - 确认包含最新性能优化:SQL查询优化、分页功能、二级缓存配置 2. **Tomcat环境要求**: - Tomcat版本:10.1.48(Jakarta EE 10兼容) - JDK版本:17或更高(与项目`pom.xml`中配置的Java版本一致) - 数据库:需创建优化索引(详见数据库索引优化部分) ## 部署步骤 ### 1. 准备部署文件 ```bash # 将WAR文件重命名为DL.war(与context-path一致) # 注意:在Windows命令提示符中使用 copy target\web-0.0.1-SNAPSHOT.war target\DL.war # 或者在PowerShell中使用 # Copy-Item -Path "target\web-0.0.1-SNAPSHOT.war" -Destination "target\DL.war" # 在Linux/Mac终端中使用(注意转义括号) # cp d:\java\project\web\(8)\web\target\web-0.0.1-SNAPSHOT.war d:\java\project\web\(8)\web\target\DL.war # 或者使用相对路径避免路径转义问题 # cd d:\java\project\web(8)\web && cp target\web-0.0.1-SNAPSHOT.war target\DL.war ``` ### 2. 上传WAR文件到服务器 使用SFTP或SCP工具将`DL.war`文件上传到服务器的Tomcat目录: ```bash # 示例:使用scp上传(注意处理路径中的括号) # 方法1:转义括号 scp d:\java\project\web\(8)\web\target\DL.war user@your-server:/opt/tomcat/webapps/ # 方法2:使用相对路径(推荐) cd d:\java\project\web(8)\web scp target\DL.war user@your-server:/opt/tomcat/webapps/ # 方法3:使用引号包裹路径(在某些终端中有效) scp "d:\java\project\web(8)\web\target\DL.war" user@your-server:/opt/tomcat/webapps/ ``` ### 3. 确保Tomcat目录权限正确 ```bash # 登录服务器后执行 cd /opt/tomcat # 确保tomcat用户对webapps目录有写权限 chown -R tomcat:tomcat webapps/ chmod -R 755 webapps/ ``` ### 4. 配置Tomcat(可选但推荐) #### 4.1 配置context.xml(解决可能的内存泄漏问题) 编辑`/opt/tomcat/conf/context.xml`文件,添加以下配置: ```xml WEB-INF/web.xml ${catalina.base}/conf/web.xml ``` #### 4.2 调整Tomcat内存配置 编辑`/opt/tomcat/bin/setenv.sh`(如果不存在则创建): ```bash #!/bin/bash # 为Tomcat设置适当的内存 JAVA_OPTS="-Xms512m -Xmx1024m -XX:MaxPermSize=256m" # 添加Tomcat 10兼容性参数 JAVA_OPTS="$JAVA_OPTS --add-opens=java.base/java.lang=ALL-UNNAMED" ``` 给脚本添加执行权限: ```bash chmod +x /opt/tomcat/bin/setenv.sh ``` ### 5. 启动或重启Tomcat ```bash # 切换到Tomcat的bin目录 cd /opt/tomcat/bin # 停止Tomcat(如果正在运行) ./shutdown.sh # 等待Tomcat完全停止(约30秒) # 启动Tomcat ./startup.sh ``` ### 6. 验证部署 1. **检查Tomcat日志**: ```bash tail -f /opt/tomcat/logs/catalina.out ``` 2. **访问应用**: - 应用应该可以通过以下URL访问:`http://your-server-ip:8080/DL` - 登录页面:`http://your-server-ip:8080/DL/loginmm.html` ## 常见问题排查 ### 1. 端口冲突 如果Tomcat的8080端口已被占用,修改`/opt/tomcat/conf/server.xml`中的端口配置: ```xml ``` ### 2. 数据库连接问题 确保数据库服务器允许来自Tomcat服务器IP的连接。检查应用配置中的数据库连接URL是否正确。 ### 3. 类加载问题(Tomcat 10特有) Tomcat 10使用Jakarta EE,所有`javax.*`包已改为`jakarta.*`。如果出现类找不到的错误: - 检查是否有冲突的JAR包在WEB-INF/lib中 - 确保使用的是支持Jakarta EE的依赖版本 ### 4. 内存溢出 如果出现内存溢出错误,增加Tomcat的内存分配,修改`setenv.sh`文件: ```bash JAVA_OPTS="-Xms1024m -Xmx2048m -XX:MaxPermSize=512m" ``` ## 数据库索引优化(重要) 在部署新版本前,请在数据库服务器上执行以下索引创建脚本,以提升查询性能: ```sql -- 执行CREATE_OPTIMIZATION_INDEXES.sql文件中的脚本 -- 在服务器上执行: source /path/to/CREATE_OPTIMIZATION_INDEXES.sql -- 或直接复制脚本内容执行 -- 1. 为managers表创建索引 CREATE INDEX idx_managers_enterprise_id ON managers(enterprise_id); CREATE INDEX idx_managers_user_name ON managers(user_name); -- 2. 为users表创建索引 CREATE INDEX idx_users_user_id ON users(user_id); CREATE INDEX idx_users_user_name ON users(user_name); CREATE INDEX idx_users_status ON users(status); -- 3. 为usermanagements表创建索引 CREATE INDEX idx_usermanagements_user_id ON usermanagements(user_id); CREATE INDEX idx_usermanagements_role_id ON usermanagements(role_id); CREATE INDEX idx_usermanagements_permission_level ON usermanagements(permission_level); ``` ## 应用更新流程 1. **执行数据库索引优化**:按照上方数据库索引优化部分执行索引创建脚本 2. **停止Tomcat**:`./shutdown.sh` 3. **备份旧数据**:`cp -r /opt/tomcat/webapps/DL /path/to/backup/` 4. **删除旧的WAR文件和解压目录**:`rm -rf /opt/tomcat/webapps/DL*` 5. **上传新的WAR文件** 6. **启动Tomcat**:`./startup.sh` 7. **监控日志确认部署成功**:`tail -f /opt/tomcat/logs/catalina.out` ## 性能优化验证 部署完成后,请执行以下验证步骤确认性能优化效果: 1. **验证分页功能**: - 访问负责人管理页面,确认列表显示已启用分页 - 验证翻页功能正常,数据加载速度提升 2. **验证SQL查询性能**: - 执行常用查询操作,确认响应时间明显改善 - 监控数据库慢查询日志,检查是否有新的慢查询 3. **验证缓存效果**: - 连续访问相同数据页面,确认第二次访问速度更快 ## 回滚方案 如遇部署问题,请按以下步骤回滚: 1. 停止Tomcat:`./shutdown.sh` 2. 删除新部署文件:`rm -rf /opt/tomcat/webapps/DL*` 3. 恢复备份:`cp -r /path/to/backup/DL /opt/tomcat/webapps/` 4. 恢复数据库索引(如需要) 5. 启动Tomcat:`./startup.sh` ## 注意事项 1. **备份**:部署前请备份现有应用数据和配置 2. **维护窗口**:选择低流量时段进行部署 3. **监控**:部署后密切监控应用性能和日志 4. **权限**:确保Tomcat用户对所有必要目录有正确权限 5. **性能监控**:部署后持续监控系统性能指标,必要时进行进一步优化 6. **索引维护**:定期检查数据库索引使用情况和碎片 --- 部署时间:2024 版本:2.0(包含性能优化) --- > 详细性能优化说明请参考:PERFORMANCE_OPTIMIZATION_GUIDE.md