一个Tomcat发布多个Springboot项目流程记录

一、首先,讲项目打包成war,如果是jar包,修改如下

1、修改pom.xml,

<packaging>war</packaging>

2、主启动类继承SpringBootServletInitializer,重写configure方法

/**
 * SprintBootApplication
 */
@Slf4j
@SpringBootApplication
@EnableCaching
@EnableScheduling
public class BootApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        ApplicationContext context = SpringApplication.run(BootApplication.class, args);
        String serverPort = context.getEnvironment().getProperty("server.port");
        log.info("webstarted at http://localhost:" + serverPort);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(BootApplication.class);
    }

}

至此即可,不需要排除tomcat  jar包,排除也行,添加serverlet api支持

二、在磁盘任何位置,创建一个web-project(名称随便,主要是用来放多个项目)文件夹,比如,我们放一个叫做pan的项目,一个execute(一个是百度云盘网站,一个是爬虫执行器)

 

三、修改tomcat  conf  下面的service.xml,如果觉得源文件注释太多,可以直接删除,我是觉得那个注释看着眼花

xxxxx\tomcat8.5\conf

 

四、复制Servies节点,顺便做个优化

<Service name="Catalina.execute">

    <Connector port="9911" protocol="org.apache.coyote.http11.Http11NioProtocol"
			   maxThreads="600"
			   minSpareThreads="100"
			   maxSpareThreads="500"
			   acceptCount="700"
			   compression="on"
			   compressionMinSize="2048"
			   noCompressionUserAgents="gozilla, traviata"
			   compressableMimeType="text/html,text/xml,text/javascript,application/javascript,text/css,text/plain,text/json"
               connectionTimeout="20000"
               redirectPort="8443" />
  
    <Engine name="Catalina.execute" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
      
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="false">

	   <Context path="" docBase="C:\Users\gqsu\Desktop\web-project\execute" debug="0" reloadable="false"/>
       <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>
    </Engine>
  </Service>

Connector节点属性,主要是配置最大线程、链接超时时间、开启GZIP压缩等功能,以及非阻塞式NIO协议。有不清楚的,可直接百度

重点:

配置Context节点,path相当于访问路径,为空,就相当于Springboot项目,Path为 / 一样,输入ip+端口即可访问

docBase,项目的绝对路径

reloadable 改为false,避免频繁重启。也不清楚为什么,本来没对class文件修改,但就是动不动重启,索性关了。一般情况下,对class文件也不会频繁改动,如果改了,重启tomcat就行

另一个项目,再复制一个Service节点,改一下端口和项目路径即可。一般情况下,不建议都配置到80端口,如果觉得这样做域名映射不方便,可以在前面再加个Nginx,让Nginx监听80端口,后端服务都由Nginx做个代理。

配置如下

## 任务调度中心
	upstream job{
		server ip:端口;
	}
	
	
	server{
		listen 80;
		server_name www.520mwx.com;
		
		location / {
			proxy_pass http://job;
			index  index.html index.htm;
		}
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

 

posted @ 2020-06-19 10:40  java小奔奔  阅读(854)  评论(0)    收藏  举报

公众号【嗨呀搜索】