首先需要确认Tomcat启动失败的原因是端口被占用。Tomcat默认使用8080(HTTP)、8009(AJP)、8005(控制端口),冲突时启动日志会抛出java.net.BindException: Address already in use错误。
使用以下命令查看端口占用情况(以8080为例):
netstat命令(传统方式):sudo netstat -tulnp | grep 8080ss命令(现代替代方案,更高效):sudo ss -tulnp | grep 8080lsof命令(精准定位进程):sudo lsof -i :8080apache2、nginx或其他Java应用)。若确认是其他进程占用了Tomcat端口,可通过以下命令终止该进程(需替换<PID>为实际进程ID):
sudo kill -9 <PID> 终止后再次检查端口是否释放(sudo lsof -i :8080无输出则表示释放)。若进程是系统关键服务(如apache2),需谨慎操作,避免影响系统稳定性。
若端口被其他必要进程占用,或需要更改Tomcat默认端口,需编辑Tomcat的**server.xml**配置文件(路径:/path/to/tomcat/conf/server.xml):
<Connector port="8080" protocol="HTTP/1.1",将8080改为未被占用的端口(如9090);<Connector port="8009" protocol="AJP/1.3",改为其他端口(如8010);<Server port="8005" shutdown="SHUTDOWN",改为其他端口(如8006)。若将Tomcat端口改为1024以下(如80、443等系统保留端口),需修改Tomcat的权限配置,否则会报Permission denied错误:
/etc/default/tomcat文件(Ubuntu 22.04及以上可能使用systemd,需编辑/lib/systemd/system/tomcat.service):sudo nano /etc/default/tomcat #AUTHBIND=no,取消注释并将no改为yes(允许Tomcat绑定低端口);sudo systemctl restart tomcat(或使用sudo /path/to/tomcat/bin/startup.sh)。修改完成后,通过以下方式验证Tomcat是否正常启动:
http://<服务器IP>:<新端口>(如http://192.168.1.100:9090),若出现Tomcat默认页面则表示成功;/path/to/tomcat/logs/catalina.out),确认无端口冲突错误。