You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

224 lines
6.7 KiB

3 months ago
# 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
<Context antiResourceLocking="true" antiJARLocking="true">
<!-- 现有配置保持不变 -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
</Context>
```
#### 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
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
```
### 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