公司的官网项目,还没使用到前后端分离,根据需求本地测试完以后,发布到测试环境时出现问题。
首先是打包,项目可以正常启动,但是通过maven打包的时候报错
原因是这个项目的pom中调用到了公司内网的依赖,但是idea中的maven使用的是阿里云的镜像,所以无法打包成功。
将maven中的setting.xml文件替换掉后此问题解决。
然后将war包上传到线上服务器,重启tomcat以后,tomcat已经将war解压成一个文件夹,但是访问项目路径无法访问。
查看了一下同样使用tomcat启动到其他项目可以正常访问(可能是地址没有指示正确,和下面本地启动404是一个问题,只是服务器上的项目没有404的报错提示)。以为是其他项目的访问地址影响到了新发布上去的项目影响的,所以想通过换端口解决此问题。
这里参考了几篇帖子,贴上最正确的一篇 :http://blog.51cto.com/fangwei009/1677018
当时按照其他几个帖子的描述进行更改以后(线上记得开端口,本地是不需要的),通过新端口访问项目还是照样发生。反复弄了一个多小时,没有弄清楚哪里出了问题,就在本地自己下了个tomcat测试看是不是war包的问题。
发现启动本地的tomcat可以出现访问界面但是一访问项目就出现404,通过idea启动的项目又没有这个问题。
访问tomcat正常
访问项目404
依旧不明白为什么会出现这种情况,搜索良久后发现需要对这个jar包文件配置访问路径。
解决方案:https://blog.youkuaiyun.com/yukangmine/article/details/18004753
设置以后本地成功访问,同时在本地用两个不同的端口部署了同一个项目,分别访问成功。
然后根据本地配置,线上环境也成功访问。
7.27日更新,今天上服务器看了下tomcat目录下的webapps1的目录,发现下面有两个文件夹 一个是通过Context 节点配置的,一个是通过war包解压的。瞬间好像明白了些什么。。
打开浏览器输入war包文件夹名称+home/index。成功访问了项目,得出结论,昨天访问不了的原因是没有加上war包文件夹的名称,也就是说URL没有指定要访问那个项目,所以404