Java项目Tomcat部署运维指南
部署前必须准备的两样东西
在动手操作之前,请确认你的服务器已经安装好 Java 运行环境(JDK) 和 Tomcat 服务器。
这两个组件是运行 Java Web 项目的基础。
- JDK 要求:Tomcat 9 及以上版本需要 JDK 8 或更高版本。你可以通过命令
java -version检查是否安装及版本号。如果没有,从 Oracle 官网或 OpenJDK 源下载并设置JAVA_HOME环境变量。 - Tomcat 下载:访问 Tomcat 官网 下载核心二进制包(如
apache-tomcat-9.0.xx.tar.gz)。上传到服务器后解压到/usr/local/tomcat或你喜欢的目录。
小提示:如果使用宝塔面板,可以在软件商店直接安装 Tomcat,系统会自动配置 JDK 依赖,省去手动设置环境变量的步骤。
上手操作:部署你的第一个 Java Web 项目
假设你已经有一个 .war 格式的 Java 项目文件。
以下是标准部署流程:
- 停止 Tomcat 服务(如果正在运行)
cd /usr/local/tomcat/bin
./shutdown.sh
可以通过 ps aux | grep tomcat 确认进程已终止。
- 清除旧项目缓存(可选但推荐)
删除 webapps 目录下同名的旧文件夹和 work 目录下的缓存,避免冲突。
rm -rf /usr/local/tomcat/webapps/旧项目名
rm -rf /usr/local/tomcat/work/Catalina
- 上传并放置 war 包
将新的 项目名.war 文件上传到 Tomcat 的 webapps 目录。Tomcat 启动后会自动解压部署。
如果你使用宝塔面板,可以直接在 Tomcat 管理界面选择“添加项目”,上传 war 包。
- 启动 Tomcat 服务
./startup.sh
观察启动日志(在 logs/catalina.out 中),查看是否有错误信息。
- 访问项目
浏览器输入 http://服务器IP:8080/项目名/ 即可看到页面。
如果端口被修改,请替换为实际端口。
避坑指南:新手最容易踩的四个坑
端口被占用导致启动失败
Tomcat 默认使用 8080 端口。
如果启动后无法访问,先检查端口占用:
netstat -tlnp | grep 8080
内存溢出(OutOfMemoryError)
Java 项目如果耗内存大,默认启动参数可能不够。
编辑 Tomcat 的 bin/catalina.sh(Windows 下是 catalina.bat),在顶部添加:
JAVA_OPTS="-Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m"
然后重启 Tomcat。
如果使用宝塔面板,可以在 Tomcat 设置中的“JVM 参数”处修改。
权限不足导致无法写入文件
项目如果需要在服务器上写入文件(如上传附件),需要确保 Tomcat 运行用户对目标目录有写权限。
通常 Tomcat 以普通用户运行,可修改目录所有者:
chown -R tomcat:tomcat /path/to/upload
或者将目录权限设为 777(不推荐生产环境)。
404 错误或页面无法加载
先确认项目是否已成功解压:查看 webapps 目录下是否有同名的文件夹。
如果 war 包未自动解压,可能是 webapps 目录权限问题或磁盘空间不足。
检查 logs/catalina.out 日志,常见错误有 Unable to create the directory 或 No space left on device。
效果验证:三步确认部署是否成功
- 检查 Tomcat 进程是否存在
ps -ef | grep tomcat | grep -v grep
如果有输出,说明 Tomcat 正在运行。
- 查看应用日志
进入 logs 目录,关注 catalina.out 和 localhost.日期.log。
搜索 Error 或 Exception 关键词,正常启动最后应有类似 Server startup in xxx ms 的信息。
- 通过浏览器验证接口或页面
访问项目首页或一个预期返回 JSON 的接口,确认返回正确。
如果页面报 500,查看日志定位具体问题。
高频问题解答(Q&A)
Q:war 包没有自动解压怎么办?
A:检查 Tomcat 的 conf/server.xml 中 Host 的 autoDeploy 属性是否为 true(默认是)。另外,确保 war 包权限正常(chmod 644 项目名.war),然后重新启动 Tomcat。
Q:如何修改 Tomcat 的默认端口?
A:编辑 conf/server.xml,找到
Q:部署多个项目可以共用一个 Tomcat 吗?
A:可以。只需将多个 war 包放入 webapps 目录,Tomcat 会自动为每个 war 创建独立上下文路径(即项目名)。注意确保每个项目的路径不重复。
Q:如何实现开机自启动 Tomcat?
A:在 /etc/systemd/system/ 下创建 tomcat.service 文件,内容参考官方文档。或者直接在 /etc/rc.d/rc.local 中添加启动命令(/usr/local/tomcat/bin/startup.sh),记得给 rc.local 加执行权限。
如果你正在处理 Java 项目 Tomcat 部署运维,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。