
🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用,熟悉DICOM医学影像及DICOM协议,业余时间自学JavaScript,Vue,qt,python等,具备多种混合语言开发能力。撰写博客分享知识,致力于帮助编程爱好者共同进步。欢迎关注、交流及合作,提供技术支持与解决方案。
技术合作请加本人wx(注明来自csdn):xt20160813

麒麟系统下Tomcat部署Java Web程序(WAR包)及全链路问题排查指南
一、环境准备与系统配置
1. 系统环境要求
• 操作系统:银河麒麟V10(基于Linux 4.19.90内核),需确认系统架构为x86_64或aarch64
• Java环境:
bash
# 安装OpenJDK 1.8
sudo yum install java-1.8.0-openjdk
# 验证路径
echo $JAVA_HOME # 应为/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-10.ky10.x86_64
• Tomcat版本:推荐Apache Tomcat 9.0.100(需兼容ARM架构的麒麟系统)
2. Tomcat安装与配置
bash
# 下载并解压
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.100/bin/apache-tomcat-9.0.100.tar.gz
tar -zxvf apache-tomcat-9.0.100.tar.gz -C /usr/local/
# 配置环境变量(编辑/etc/profile)
export CATALINA_HOME=/usr/local/apache-tomcat-9.0.100
export PATH=$PATH:$CATALINA_HOME/bin
# 创建专用用户并授权
sudo useradd -M -s /sbin/nologin tomcat
sudo chown -R tomcat:tomcat $CATALINA_HOME
二、WAR包部署全流程
1. 基础部署步骤
bash
# 停止Tomcat服务
$CATALINA_HOME/bin/shutdown.sh
# 上传WAR包至webapps目录
cp demo-web.war $CATALINA_HOME/webapps/
# 启动服务(后台运行)
nohup $CATALINA_HOME/bin/startup.sh &
# 验证部署
curl http://localhost:8080/demo-web/healthcheck
2. 高级配置选项
• 自定义上下文路径(避免URL带项目名):
xml
<!-- 修改$CATALINA_HOME/conf/server.xml -->
<Context path="/api" docBase="demo-web" reloadable="false"/>
• 多实例部署(解决端口冲突):
bash
cp -r $CATALINA_HOME /opt/tomcat-instance2
sed -i 's/8080/8081/g' /opt/tomcat-instance2/conf/server.xml
三、服务管理与监控
1. Systemd服务配置
bash
# 创建服务文件
sudo nano /etc/systemd/system/tomcat.service
# 内容示例
[Unit]
Description=Apache Tomcat 9
After=syslog.target network.target
[Service]
User=tomcat
Group=tomcat
Environment="CATALINA_OPTS=-Xms2G -Xmx4G"
ExecStart=$CATALINA_HOME/bin/catalina.sh run
Restart=on-failure
[Install]
WantedBy=multi-user.target
# 启用服务
sudo systemctl daemon-reload
sudo systemctl enable tomcat
2. 常用管理命令
bash
systemctl status tomcat # 查看状态
journalctl -u tomcat -f # 实时追踪日志
ss -tulnp | grep java # 检查端口占用
3、Tomcat服务管理与监控
1. systemctl服务管理命令
在麒麟系统中,若已将Tomcat配置为Systemd服务(参考),可通过以下命令管理:
bash
# 查看服务状态(检查是否运行、端口监听等)
systemctl status tomcat
# 重启服务(适用于配置修改后)
systemctl restart tomcat
# 停止服务(释放端口资源)
systemctl stop tomcat
# 启动服务(部署新应用或故障恢复后)
systemctl start tomcat
# 设置开机自启
systemctl enable tomcat
2. 服务状态解读
• Active: active (running):服务正常。
• Active: failed:启动失败,需检查日志(journalctl -u tomcat
)。
• 端口占用:若提示Address already in use
,使用 ss -tunlp | grep 8080
查找占用进程并终止。
四、高频问题排查手册
1. 端口冲突处理
• 查找占用进程:
bash
sudo lsof -i :8080 # 显示PID和进程名
sudo netstat -tulnp | grep 8080
• 解决方案:
• 终止进程:kill -9 <PID>
• 修改Tomcat端口:
```xml
<!-- 修改$CATALINA_HOME/conf/server.xml -->
<Connector port="9090" protocol="HTTP/1.1"/>
```
2. 权限问题修复
bash
sudo mkdir -p /data/dicom
sudo semanage fcontext -a -t tomcat_log_t "/data/dicom(/.*)?"
sudo restorecon -Rv /data/dicom
3. 数据库连接异常
• 排查步骤:
-
检查
application.properties
的JDBC URL格式:propertiesspring.datasource.url=jdbc:postgresql://localhost:5432/dicomai
-
验证PostgreSQL服务状态:
bashsystemctl status postgresql pg_isready -h localhost -p 5432
-
防火墙放行:
bashsudo firewall-cmd --add-port=5432/tcp --permanent
五、性能优化与安全加固
1. JVM调优参数
bash
# 修改$CATALINA_HOME/bin/setenv.sh
export JAVA_OPTS="-Xms4G -Xmx8G -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
2. 连接池配置(Druid示例)
properties
spring.datasource.druid.max-active=100
spring.datasource.druid.validation-query=SELECT 1 FROM DUAL
3. 安全策略
• 禁用管理界面:
bash
rm -rf $CATALINA_HOME/webapps/{manager,host-manager}
• 启用HTTPS:
xml
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true" keystoreFile="/etc/ssl/tomcat.keystore"/>
六、日志分析与监控体系
1. 关键日志路径
日志类型 | 路径 | 功能说明 |
---|---|---|
启动日志 | $CATALINA_HOME/logs/catalina.out | 记录启动过程及严重错误 |
应用日志 | /data/dicom/log-all.log | 业务逻辑错误追踪 |
访问日志 | $CATALINA_HOME/logs/localhost_access_log | HTTP请求分析 |
2. 日志分析技巧
• 实时监控:
bash
tail -f catalina.out | grep -E 'ERROR|WARN'
• 内存泄漏分析:
bash
jmap -dump:format=b,file=heapdump.hprof <PID>
3. ELK日志集成
bash
# Logstash配置示例
input {
file {
path => "/usr/local/tomcat/logs/*.log"
start_position => "beginning"
}
}
filter {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} %{DATA:message}" }
}
}
七、附录:快速排障速查表
现象 | 排查命令/操作 | 解决方案 |
---|---|---|
服务无法启动 | journalctl -u tomcat --since "2025-05-13" |
检查端口冲突、权限问题或JVM配置错误 |
静态资源404 | ls -l $CATALINA_HOME/webapps/demo-web/static/ |
检查WAR包解压完整性,设置spring.resources.static-locations |
CPU持续100% | top -H -p <PID> + jstack <PID> > thread_dump.log |
分析线程死锁,优化代码逻辑或调整线程池参数 |
数据库连接超时 | telnet <DB_IP> 5432 + sudo tcpdump -i eth0 port 5432 -nn -v |
检查网络策略、连接池配置或数据库负载 |
日志文件不滚动 | ls -lh /data/dicom/log-all.log |
检查Logback配置的RollingPolicy,设置<maxHistory>30</maxHistory> |
参考文献
银河麒麟V10安装Tomcat
麒麟系统Tomcat环境变量配置
Tomcat多实例部署与端口管理
Systemd服务配置与开机自启
HTTPS安全配置指南
ELK日志集中化方案
JVM内存泄漏排查方法
Tomcat端口占用速查手册
通过本指南,您可系统掌握麒麟系统下Tomcat的全生命周期管理,涵盖部署、监控、排障与优化全流程。遇到未覆盖的异常时,建议结合 catalina.out
日志深度分析或查阅官方文档。