背景:环境上跑在tomcat下的web项目,我想拖到本地的tomcat跑起来,本地tomcat一直是公司里idea跑项目时用的,很久之前从同事那里拷贝过来的,不是自己安装的,很多配置没打开去了解过就知道能跑公司的项目
问题一:拖到本地的tomcat的webapps文件夹下启动时报出了连不上远程数据库的问题
分析解决:这个问题很乌龙,在本地idea里跑是可以正常启动的,但是在本地tomcat就报数据库连接超时,所以就很纳闷,如果是网络问题那本地tomcat和idea的ip是一致的,不应该存在这个问题,查了资料没有结果。后来把项目删掉,发现启动日志依然在报这个错,这更奇怪了,我明明已经删掉项目了,后来排查之后发现在tomcat的其他文件夹下还有一个项目,跑的是这个项目,这个项目的远程数据库已经清掉了,所以连不上,我猜测这个项目是idea之前跑的项目。后来,我把这个项目清掉了,再把我的项目放到webapps文件夹下,不再报错。
问题二:项目放到webapps文件夹下后启动tomcat却没有跑起来
分析解决:解决完第一个问题后,又遇到了只启动tomcat没启动项目的问题。检查了tomcat的各个配置文件感觉并没有什么问题,既然这个tomcat跑不起来那就新下载一个tomcat试试看是不是我的tomcat本身配置的问题。下载了tomcat10,把项目拖进去之后跑起来发现日志中已经打印项目相关的信息了,说明开始跑项目了,这说明确实是我的tomcat的配置问题。后来发现原来是之前的tomcat的server.xml配置文件里host配置的问题,这是之前的配置:
<Host name="localhost" appBase=""
unpackWARs="true" autoDeploy="true">
appBase为空,tomcat找不到项目所在位置。之前用idea可以跑起来,应该是在添加web项目到tomcat时,idea自身有相关配置才使项目能够跑起来的。改为appBase="webapps"之后项目可以跑起来了。
问题三:项目起来以后,访问项目路径http://localhost:8080/test/login时,老是跳转到https://localhost:8443/test/login,导致我根本访问不了项目
分析解决:这个问题我首先认为是server.xml里配置的跳转到https的,发现并没有,正常是不会跳转的,那就只能是项目自身的配置导致的了,项目自身关于访问路径的配置应该就是在web.xml里了,后来排查发现果然是是项目的web.xml里配置了强制跳转到https请求,后来去掉这个强制跳转果然可以正常访问了
问题四:项目的访问路径到底是什么
我相信很多人都有过这个疑问,我部署在tomcat里的项目到底怎么能访问到,这里搞清楚一下,正常默认访问的路径就是http://+ip+端口+项目名+接口或页面路径。比如http://localhost:8080/test/login,其中test就是你的项目名,login就是要访问的登录页地址。
如果要想自定义访问路径可在server.xml中host配置之下加入context配置,比如:<Context path="/haha" docBase="../webapps/test" reloadable="false" ></Context>
其中docBase定义了项目路径,path定义了此项目的访问地址,那么这个时候你的访问地址就是:http://localhost:8080/haha/login 了