在公司做项目上线的时候,经常遇到要把开发好的Java Web应用扔到服务器上跑起来。最常见的做法就是把打包好的war文件丢进Tomcat,让它自动解压运行。这个过程听起来简单,但真动手时,不少人会在权限、路径或者配置上踩坑。
什么是War包?
War(Web Application Archive)是Java Web应用的标准打包格式,里面包含了JSP、Servlet、配置文件、静态资源等所有内容。就像你把一个网站的所有零件装进一个盒子里,交给Tomcat来组装。
准备你的Tomcat环境
确保服务器上已经安装了Java,并且设置了JAVA_HOME环境变量。然后下载对应版本的Tomcat,解压到你喜欢的目录,比如 /opt/tomcat。启动脚本一般在 bin 目录下:
cd /opt/tomcat/bin
./startup.sh
看到控制台输出“Server startup in XXX ms”,说明Tomcat已经跑起来了。浏览器访问 http://服务器IP:8080 能看到猫的图标,就表示一切正常。
部署War包的两种方式
方式一:直接复制到webapps目录
这是最简单粗暴的方法。把你的应用打成 myapp.war,然后复制到 tomcat/webapps/ 目录下:
cp myapp.war /opt/tomcat/webapps/
Tomcat会自动检测到新文件,解压成同名文件夹(比如 myapp),并加载应用。过几秒后,访问 http://IP:8080/myapp 就能看到页面了。
方式二:通过Manager页面上传
如果你不方便登录服务器,可以用Tomcat自带的管理界面。先确认 conf/tomcat-users.xml 里有管理员账号:
<role rolename="manager-gui" />
<user username="admin" password="123456" roles="manager-gui" />
重启Tomcat后,访问 http://IP:8080/manager/html,输入账号密码,就能看到上传框。选择war文件,点部署,搞定。
常见问题排查
如果页面打不开,先看日志。Tomcat的日志都在 logs 目录下,重点关注 catalina.out 和应用自己的log文件。
比如出现 java.lang.OutOfMemoryError,可能是堆内存不够,可以在启动脚本里加JVM参数:
export JAVA_OPTS="-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m"
还有人遇到上传war包后名字变成乱码,多半是Linux系统字符集设置不对,建议统一用英文命名,别带中文和空格。
另外,如果应用依赖某些本地库或配置文件,记得提前放好路径,别指望Tomcat能帮你找。
小技巧:热部署与清理缓存
开发阶段频繁更新,可以直接删掉 webapps 下的解压目录和war包,再扔新的进去。Tomcat会重新加载。注意清掉 work 目录下的JSP编译文件,避免旧代码残留:
rm -rf /opt/tomcat/work/*
这样能避免改了JSP却看不到效果的尴尬。
部署这事儿,说白了就是细心加经验。多练几次,就知道哪些坑一定会踩,提前绕开就行。