您现在的位置是:知识 >>正文
web项目怎么部署到tomcat服务器
知识1954人已围观
简介把web项目扔进tomcat,说穿了就三步:把项目变成war包,把war包丢进webapps目录,然后启动tomcat。听起来简单,但实际操作里坑不少,我见过太多人在第二步就卡壳了。 先说最直接的方式 ...
把web项目扔进tomcat,目部说穿了就三步:把项目变成war包,服务把war包丢进webapps目录,目部然后启动tomcat。服务听起来简单,目部但实际操作里坑不少,服务我见过太多人在第二步就卡壳了。目部
先说最直接的服务方式。你项目编译完,目部如果是服务maven工程,在pom.xml所在目录执行mvn clean package,目部target目录下会生成一个.war文件。服务没有maven?目部那手动把编译好的class文件、jsp、服务静态资源按web标准目录结构塞进一个文件夹,目部用jar cvf命令打成war包也行。war包本质上就是个zip文件,你甚至可以手动把扩展名改成.zip,解压看看里面的结构——WEB-INF/classes、WEB-INF/lib、META-INF,缺一不可。
拿到war包之后,直接复制到tomcat的webapps目录下。这里有个细节:tomcat默认是解压式部署,你复制一个myapp.war进去,它启动时会自动解压成myapp/文件夹。如果你更新了war包,记得先删除旧解压目录,否则tomcat可能不会覆盖旧文件——我吃过这个亏,改了个css死活不生效,最后发现是旧目录里的文件在作祟。
启动tomcat,bin目录下startup.sh(linux/mac)或startup.bat(windows)。等几秒,打开浏览器访问http://localhost:8080/myapp/,看到你的页面就成功了。端口默认8080,被占了的话去conf/server.xml里改Connector标签的port属性。
但真实项目很少这么裸奔。你开发时用的是IDE内置tomcat,部署到生产环境就得考虑上下文路径。war包名字决定了访问路径,myapp.war就是/myapp,想要根路径访问,要么把war包改名成ROOT.war,要么在tomcat的conf/Catalina/localhost下建个ROOT.xml配置文件指向你的应用。我习惯后者,因为不用动原包名,回滚方便。
还有个常见问题——数据库连接、外部配置路径。你的项目里如果写死了/home/user/config.properties这种绝对路径,部署到服务器八成会炸。最好的做法是让tomcat的管理员通过JNDI或者环境变量注入配置,但很多小团队图省事,直接改war包里的配置文件再重新打包。这招能用,但每次更新都要记得改,忘了就等着半夜被叫起来修bug吧。
最后说个没人教你的土办法。如果你只是临时演示或者内网用,不想动tomcat的webapps目录,可以在conf/server.xml的Host标签里加个<Context path="/demo" docBase="/opt/myapp" reloadable="true"/>。docBase指向你磁盘上的项目目录,不用打包,改代码直接刷新就能看到效果。这招开发调试特别爽,但生产环境别用——reloadable="true"在并发高时会频繁扫描class文件,性能损耗不小。
部署这事儿,第一次总会手忙脚乱,多搞几次就发现规律了。war包丢进去、启动、看日志,tomcat的logs/catalina.out会告诉你一切。报错别慌,八成是jar冲突或者web.xml配置写错。你真正要记住的只有一条:tomcat只是个容器,它不关心你的代码是怎么写的,只关心你的目录结构对不对。
Tags:
上一篇:ai在电商领域的应用
下一篇:红网怀化论坛
相关文章
忽有狂徒夜磨刀 帝星飘摇荧惑高
知识那晚我正蹲在城墙根下啃烧饼,忽然听见磨刀石的声音。不是寻常的霍霍声,是那种带着恨意的、一下一下往肉里刮的响动。抬头看见火光里有个影子,刀身映着星子,亮得邪乎。 这让我想起崇祯十七年春天。李自成进北京那 ...
【知识】
阅读更多西瓜娱乐聚合app
知识《西瓜娱乐聚合app》 凌晨两点十七分,我第七次点开那个红绿相间的图标。西瓜视频的推荐页又给我推了同一条农村抓猪视频——这已经是本周第三次了,而我居然又看完了全程。指尖划过屏幕时我忽然意识到,这个ap ...
【知识】
阅读更多上海樱花国际日语
知识上海樱花国际日语,招牌上那朵粉白色的樱花logo,在徐家汇这片钢筋水泥里显得有点突兀。我去那儿不是为了学日语,纯粹是陪朋友咨询,结果自己倒被课程顾问说动了心——她没跟我讲什么“全球化竞争力”,而是直接 ...
【知识】
阅读更多