在使用IDEA开发项目过程中,特别是在学习的时候,很多同学都是装完idea,mysql,meaven等工具后,然后在idea中配置tomcat,默认了8080端口启动,如下图:
然后代码敲完后,在浏览器中输入localhost:8080,就能启动项目了,当时也很开心吧~
但是,这样你的tomcat只能开这么一个项目,如果你还有一个项目也在开发,也需要启动,这样是不行的。那么应该怎么办?最近我开发第一个项目的时候,需要启动第二个项目,两个项目需要一起联调测试,那么这个时候就需要开启两个端口了。应该怎么做?接着往下看~
第一步:复制一份tomcat目录下的webapps文件夹,直接粘贴,取名webapps1(名字可以随便取,但要和第二步中的保持一致),如下图:
第二步:我们打开tomcat目录下的conf目录,找到server.xml,打开后找到<Service>节点,将该节点完整复制一下,直接粘贴在下面,这样我们就有两个<Service>节点了,然后修改红色框出来的地方(有三个地方:port ,redirectPort和appBase,绿色框出来的内容你们可能一开始没有,到下面再解释)如下图:
意思是我要开启两个端口(8022和8023)来访问两个项目。
那么怎么将两个项目分别放入webapps和webapps1目录中呢?我们需要将两个项目分别打包成war,然后分别扔到webapps和webapps1目录中。
第三步:打包项目,我们先打开pom.xml文件,将打包方式改为war;
我们点击idea左下角的小方框,再点击meaven,然后在跳出来的面板中,找到你的项目,点开来找到packge,点击就可以打包了,如下图:
控制面板跳出下图信息后,就表示打包好了,打包后的war在红色框出的目录下:
第四步:我们去该目录下,找到打包好的war,复制粘贴到tomcat的webapp下;然后将第二个项目用相同的方式打包,复制粘贴到tomcat的webapp1下(将两个war分别放到webapps和webapps1下),如下图:(这只是其中一种打包方式,可以自行再百度其它打包方式)
然后通过tomcat目录中的bin文件夹下的startup.bat,双击启动(如果idea的内置tomcat开着要先关闭),然后webapps和webapps1目录下会自动生成两个同项目名的文件夹,如下图:
这个时候就结束了,我们打开浏览器,我们这次不是输入localhost:8080,而是输入我们在第二步中在server.xml中修改的两个端口号(我这里是8022和8023),地址分别是:localhost:8022和localhost:8023,这个时候问题来了,有些同学直接输入localhost+端口号访问不了,跳转到了汤姆猫的页面,这是为什么?
如果你输入localhost:端口号+ 斜杠 +你打包后的war名呢?
(例如:localhost:8022/untitled1-1.0-SNAPSHOT,你会发现是不是可以访问?)
还记得第一步中server.xml中绿色框出来的<Context>标签吗?你在两个<Service>标签下的<Engine> 标签下的<Host>标签下,加上<Context>标签,改一下docBase路径(分别是你两个webapps下的项目根目录):
<Context>内容如下,拿去复制吧~
为什么要加<Context>,去这篇文章简单了解一下吧:
<Context path="" reloadable="false" docBase="D:\apache-tomcat-8.5.81\webapps\untitled1-1.0-SNAPSHOT">
<Logger className="org.apache.catalina.logger.SystemOutLogger" verbosity="4" timestamp="true"/>
</Context>
再次输入localhost:8022和localhost:8023,回车,效果如下图,通过一个tomcat的两个端口号启动了两个项目(因为我的第二个项目是直接复制了第一个的,所以内容差不多):
总结:1.创建两个webapps文件夹;
2.修改server.xml,配置两个<Servers>节点,修改端口号;
3.打包两项目;
4.将打包好的两个war分别放入两个wepapps下
5.启动tomcat
(如果要将项目映射到根目录,需要添加<Context>标签,不然的话要加项目名访问)