外部Tomcat部署Spring Cloud项目

spring-cloud是基于spring boot的,默认提供内嵌的tomcat,所以打包直接生成jar包,用java -jar命令就可以启动。但是,有时候我们更希望一个tomcat来管理多个项目,这种情况下就需要项目是war格式的包而不是jar格式的包。spring-boot同样提供了解决方案,只需要简单的几步更改就可以了,这里提供maven项目的解决方法。

因为本文主要讲的是部署方面的操作,所以本文不再讲部署之前所需要在项目上所做的工作,具体的我这里引用一篇别人的文章,大家可以先从这个文章入手,然后再部署。百家号有防广告校验,所以下边的链接,请去掉问号之后访问。

https://?www?.cnblogs?.com?/a8457013/p/7687792.html

要在tomcat上部署一个spring cloud微服务项目,首先我们要解决的是端口问题,我们都知道,微服务架构的系统,肯定是有多个端口的,还有,tomcat的端口问题,我们一般使用tomcat,是不是都会把war包或者文件夹直接扔在webapps下边,server.xml里面只有一个配置端口的地方。我们先来看看server.xml配置文件。

打开百度App,看更多图片

server.xml

直接看这个service节点,有一个唯一名称属性name,还有一些子节点是配置端口的,一般情况的话,我们就只改这个8080端口,再把war包放webapps下边就好了。

可以看到,service节点下边有一个host节点,host节点的appBase属性就是配置的项目路径,这个路径可以是绝对路径,也可以是相对路径,默认的appBase就是webapps。

我们的微服务一般是有多个服务的,所以我们就复制出多个service节点,给他赋予上不同的端口号,端口号是有两个地方需要改的,这个得注意下,一个ajp,一个http。这里贴一下我的配置文件,给大家看一下。

server.xm文件

<Host name="lcs-discover" appBase="shunfeng/discover/" unpackWARs="true" autoDeploy="true">

<Context path="" docBase="lcs-discover.war" reloadable="true" allowLinking="true" name="/lcs-discover"></Context>

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />

</Host>

这部分就是具体配置的微服务的配置了,path=""代表该微服务没有上下文根,你也可以自己设置,一般不建议设置,因为我们一般开发的时候,就是没有这个上下文的,直接用server_name去掉其他服务的。docBase="lcs-discover.war"代表的是 appBase="shunfeng/discover/"下边的具体war包服务文件。

这个是我的一个目录结构,其他的服务就仿照这个来创建文件夹,也比较好管理,你也可以直接把文件夹放在代码的target里,代码编译后,war包也就生成了,可以快速更新代码。/root/apache-tomcat-9.0.21/shunfeng/discover。

还有一个需要注意的点,就是我们配置了多个服务在一个tomcat里,都没有配置上下文,这样的话,就会导致tomcat认为他自己启动了多个一样的服务,会报错,这时候只需要在Host节点下边的Context节点属性里,加一个name,例如name="/lcs-discover"标明唯一性。并且yml配置文件里增加

spring:

jmx:

enabled: false

就好了。

文章写得不好,有什么疑问就在下边问吧,我这刚写,写得多了就好了。

 

本文是从我的百家号“老范教你玩电脑”转载过来的,不是侵权。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章