精华内容
下载资源
问答
  • 由于最近公司启动了微服务项目,使用框架springcloud搭建微服务,因此开始了解java。 由于工作中用的基本为apache、nginx,发现java程序需要部署tomcat下,因此开始漫长的 tomcat“采”坑之路首先说先项目基本情况...
    由于最近公司启动了微服务项目,使用框架springcloud搭建微服务,因此开始了解java。 由于工作中用的基本为apache、nginx,发现java程序需要部署在tomcat下,因此开始漫长的 tomcat“采”坑之路

    首先说先项目基本情况
    1. 微服务的基本框架需要部署在tomcat下
    2. 基础业务也用java来实现【可选】
    3. 业务服务器部署两台
    4. 使用springboot开发项目

    在部署tomcat时,遇到几个问题如下:
    1. 如何打包
    2. 如何部署
    3. 部署之后无效果
    4. 两台相同业务服务部署出错

    针对以上问题,总结下自己的坑:


    第1步搭建springboot项目

    本人大家eureka服务注册于发现,中间涉及到不需要的代码可忽略
    1. 项目搭建完成后 需要将启动程序设置为springbootapplication,采用注解方式,并添加依赖
    2.  更新启动类集成springbootserletinitiallizer
    3. 重新config方法




    第2步:取消其他类中springbootapplication配置




    第3步:在application.properties中配置 default-domain

        即使是同一个服务 ,不同端口部署也需要修改此配置,如果在同一个服务器上部署多个服务会导致出错






    第4步 更新pom文件

    1. 打包方式更新为war为了部署
    2. eureka-server 配置是为了服务注册与发现,此处可忽略,不影响到部署
    3. 注意,本人搭建项目中没有tomcat 的import ,因此如果此处有tomcat 请注释掉



    1. 这个插件难道是为了maven的package打包工具吗?我猜


    提供本人完整pom文件
    <? xml version ="1.0" encoding ="UTF-8" ?>
       < modelVersion >4.0.0 </ modelVersion >

       < groupId >com.example </ groupId >
       < artifactId >servicehi </ artifactId >
       < version >0.0.1-8763 </ version >
       < packaging >war </ packaging >

       < name >server-hi </ name >
       < description >Demo project for Spring Boot </ description >

       < parent >
          < groupId >org.springframework.boot </ groupId >
          < artifactId >spring-boot-starter-parent </ artifactId >
          < version >2.0.0.RELEASE </ version >
          < relativePath /> <!-- lookup parent from repository -->
       </ parent >

       < properties >
          < project.build.sourceEncoding >UTF-8 </ project.build.sourceEncoding >
          < project.reporting.outputEncoding >UTF-8 </ project.reporting.outputEncoding >
          < java.version >1.8 </ java.version >
          < spring-cloud.version >Finchley.M9 </ spring-cloud.version >
       </ properties >

       < dependencies >
          < dependency >
             < groupId >org.springframework.cloud </ groupId >
             < artifactId >spring-cloud-starter-netflix-eureka-server </ artifactId >
          </ dependency >

          < dependency >
             < groupId >org.springframework.boot </ groupId >
             < artifactId >spring-boot-starter-test </ artifactId >
             < scope >test </ scope >
          </ dependency >
       </ dependencies >

       < dependencyManagement >
          < dependencies >
             < dependency >
                < groupId >org.springframework.cloud </ groupId >
                < artifactId >spring-cloud-dependencies </ artifactId >
                < version >${spring-cloud.version} </ version >
                < type >pom </ type >
                < scope >import </ scope >
             </ dependency >
          </ dependencies >
       </ dependencyManagement >

       < build >
          < plugins >
             < plugin >
                < groupId >org.springframework.boot </ groupId >
                < artifactId >spring-boot-maven-plugin </ artifactId >
             </ plugin >
             < plugin >
                < groupId >org.apache.maven.plugins </ groupId >
                < artifactId >maven-war-plugin </ artifactId >
                < configuration >
                   < warName >psb </ warName >
                </ configuration >
             </ plugin >
          </ plugins >
       </ build >

       < repositories >
          < repository >
             < id >spring-milestones </ id >
             < name >Spring Milestones </ name >
             < url > https://repo.spring.io/milestone </ url >
             < snapshots >
                < enabled >false </ enabled >
             </ snapshots >
          </ repository >
       </ repositories >


    </ project >







    第5步开始打包

    如果有这个插件就双击,如果没有 应该去安装吧




    打包出现BUILD SUCCESS 表示打包成功了


    第6步 部署
    对我这种初次使用tomcat的用户来说,简直了。。。 Tomcat 配置内容还是要了解下,否则一头雾水
    当然,如果你像我这样一头雾水也能配置成功,就忽略,当心给自己挖坑
    1. 对应单个服务配置,需要修改的是端口号及服务路径,就是war包放置的位置
    2. 初次之外,增加了Context的配置,用于指定服务包路径
            <Context docBase="servicehi-0.0.1-8762.war" path="/" reloadable="true" debug="0" privileged="true" />


    完整的server.xml文件如下
    附上本人的server.xml供大家参考

    <!-- Note:  A "Server" is not itself a "Container", so you may not
         define subcomponents such as "Valves" at this level.
         Documentation at /docs/config/server.html
    -->
    <Server port="8769" shutdown="SHUTDOWN">
      <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
      <!-- Security listener. Documentation at /docs/config/listeners.html
      <Listener className="org.apache.catalina.security.SecurityListener" />
      -->
      <!--APR library loader. Documentation at /docs/apr.html -->
      <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
      <!-- Prevent memory leaks due to use of particular java/javax APIs-->
      <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
      <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
      <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

      <!-- Global JNDI resources
           Documentation at /docs/jndi-resources-howto.html
      -->
      <GlobalNamingResources>
        <!-- Editable user database that can also be used by
             UserDatabaseRealm to authenticate users
        -->
        <Resource name="UserDatabase" auth="Container"
                  type="org.apache.catalina.UserDatabase"
                  description="User database that can be updated and saved"
                  factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
                  pathname="conf/tomcat-users.xml" />
      </GlobalNamingResources>

      <!-- A "Service" is a collection of one or more "Connectors" that share
           a single "Container" Note:  A "Service" is not itself a "Container",
           so you may not define subcomponents such as "Valves" at this level.
           Documentation at /docs/config/service.html
       -->

      <Service name="Catalina">
        <Connector port="8762" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />

        <Engine name="Catalina" 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="true">
            <Context docBase="servicehi-0.0.1-8762.war" path="/" reloadable="true" debug="0" privileged="true" />
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                   prefix="localhost_access_8762_log" suffix=".txt"
                   pattern="%h %l %u %t &quot;%r&quot; %s %b" />

          </Host>
        </Engine>
      </Service>

      <Service name="Catalina2">
        <Connector port="8763" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />

        <Engine name="Catalina2" defaultHost="localhost">
          <Realm className="org.apache.catalina.realm.LockOutRealm">
          <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                   resourceName="UserDatabase"/>
          </Realm>

          <Host name="localhost"  appBase="webapps2"
                unpackWARs="true" autoDeploy="true">
            <Context docBase="servicehi-0.0.1-8763.war" path="/" reloadable="true" debug="0" privileged="true" />
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                   prefix="localhost_access_8763_log" suffix=".txt"
                   pattern="%h %l %u %t &quot;%r&quot; %s %b" />

          </Host>
        </Engine>
      </Service>


    </Server>







    展开全文
  • 1.首先把jar包改成war包,然后把内嵌的tomcat去掉 &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&...

    1.首先把jar包改成war包,然后把内嵌的tomcat去掉

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <!-- ... -->
        <packaging>war</packaging>
        <!-- ... -->
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <scope>provided</scope>
            </dependency>
            <!-- ... -->
        </dependencies>
    </project>
    
    

    2。增加一个启动类,就是在springboot启动文件的相同路径,加上一个类。

    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.boot.web.support.SpringBootServletInitializer;
    
    public class SpringBootStartApplication extends SpringBootServletInitializer
     {
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
           // 注意这里要指向原先用main方法执行的Application启动类
           //UserApplication是原来springboot的启动类
            return builder.sources(UsermsApplication.class); 
        }
    }
    

    如果UsermsApplication ,ide识别不了,则需要clean project,然后在重新打包。

    3.可以在pom文件中加一个属性,然后成功的名字就是finalName规定的名字。

    build>
     	    <finalName>userms</finalName>
    		<plugins>
    			<plugin>
    				<artifactId>maven-compiler-plugin</artifactId>
    				<configuration>
    					<source>1.8</source>
    					<target>1.8</target>
    				</configuration>
    			</plugin>
    		</plugins>
    	</build>
    

    4.使用 run中的Maven install打包,成功后target文件夹中会有war包。然后放在tomca中即可。
    5.如果用到了redis ,还需要配置redis的账号密码。

    展开全文
  • SpringCloud微服务集群部署到一个Tomcat中 只有部署步骤以及注意事项,不包含具体实现 部署步骤 1.将所有微服打成war包 2.将war包拷贝到tomcat中 注意事项 1.eureka server地址为 http://ip:port/项目名/eureka ...
    只有部署步骤以及注意事项,不包含具体实现
    部署步骤
    • 1.将所有微服打成war包
    • 2.将war包拷贝到tomcat中
    注意事项
    • 1.eureka server地址为 http://ip:port/项目名/eureka
      • 项目名:tomcat下项目名默认为war包名称
    • 2.eureka client 中注册地址为eureka server的地址
    • 3.gateway服务部署时包名为ROOT
      • 访问tomcat ROOT中的内容是默认为 /,这样写是因为如果gateway有项目名,则通过gateway服务转发时没有带该名称,导致转发失败。(如果能解决该问题则gateway服务没必要将war包名称命名为ROOT, 由于刚接触springCloud所以没有解决该问题)
    展开全文
  • 继上一边博客写了spring cloud gateway的入门之后,打算部署到服务器上,却发现将网关打包成war包,然后上传到外置的tomcat服务器上,启动的时候,回到这个错: 查了不少资料(考虑了版本问题,springboot starter ...

    继上一边博客写了spring cloud gateway的入门之后,打算部署到服务器上,却发现将网关打包成war包,然后上传到外置的tomcat服务器上,启动的时候,回到这个错:

    在这里插入图片描述
    查了不少资料(考虑了版本问题,springboot starter 内置tomcat冲突的问题)都没办法让他不报这个错误,后面去官网发现以下的公示:

    在这里插入图片描述
    也就是,因为spring cloud gateway是基于netty的webflux响应式框架,必须要使用内置的tomcat,无法部署到外置的tomcat这种传统的servlet 容器!!!

    解决办法:

    将网关代码打成jar包,通过jar包部署即可。

    展开全文
  • 现在springcloud项目推荐是用jar还是war,还需不需要搭自己的tomcat,为什么?
  • SpringCloud Jar2war部署tomcat容器中

    千次阅读 2018-01-14 11:40:00
    1.修改 eureka,zuul,自己的微服务的pom 打包方式 packaging>warpackaging> 引入依赖 org.springframework.boot ...设置打包名称为ROOT,最后打包出来都是ROOT.war,每个微服务部署到不同的tomcat容器中  
  • Jenkins自动部署SpringCloud项目

    千次阅读 2020-06-30 15:45:52
    Jenkins自动部署SpringCloud项目 wToFly关注 2019.08.15 16:01:17字数 162阅读 759 1.本地准备Tomcat环境 2.jenkins下载地址https://jenkins.io/zh/download/ 选择war包下载 image.png 下载后把war包放入...
  • 在使用boot部署项目时...
  • 怎样把已经开发的spring cloud 项目进行打包部署,其实过程和spring boot 的是一样的。经过摸索之后,才发现其实spring cloud 的每个Project 可以直接打成jar包运行,因为里面自带了tomcat容器。这也是spring cloud ...
  • kubernetes/k8s+SpringCloud全栈技术

    千人学习 2021-02-06 12:12:34
    k8s部署SpringCloud项目的整体流程 第十五章 部署MySQL数据库 MySQL简介 MySQL特点 安装部署MySQL 在MySQL数据库导入数据 对MySQL数据库授权 第十六章 将SpringCLoud项目部署到k8s平台 SpringCloud的微服务电商框架...
  • SpringCloud 微服务项目使用 War 包部署到 Nacos,服务注册失败,没有错误日志,本节介绍了该问题的原因和解决办法。
  • 自己注册自己 将自己注册给别人 将别人注册进来 * 相关代码及配置如下: POM文件 <groupId>org.springframework.boot <artifactId>spring-boot-starter-parent <version>1.5.6.RELEASE</versi
  • SpringCloud模块打包部署

    千次阅读 2020-06-14 23:12:13
    公司项目架构是SpringCloud微服务,单个模块是SpringBoot,由于SpringBoot项目内置Tomcat容器,所以打包时打成Jar包,部署到Linux服务器后用命令java -jar (jar包的包名)xxxx.jar启动即可。 二、Idea中Maven生命...
  • 使用Nacos作为注册中心的Spring Boot项目,以war包形式部署到服务器上,启动项目发现该服务无法在Nacos中注册。 分析 查看源码,需从nacos的注册类找起,查找后发现,nacos注册类NacosAutoServiceRegistration继承了...
  • 整体架构我们先来看下Tomcat的整体架构,大致了解下Tomcat组件之间的关系:图片来源:《四张图带你了解Tomcat架构》图片来源:《Tomcat系统架构(上)》图片来源:《Tomcat系统架构(上): 连接器是如何设计的?...
  • 1、修改pom.xml 父工程的pom.xml中的 <packaging>pom<...--在父工程的pom.xml里,去除springboot web自带的tomcat,自己添加tomcat、servlet-api 依赖--> <dependency> <group.
  • springcloud+vue+nginx线上部署

    千次阅读 2020-06-19 20:57:09
    springcloud(网关+nacos+各服务) vue nginx 请求流程图: 上图的流程: 1.网页请求nginx的端口 2.nginx映射到vue的index.html 3.vue代码自动根据nginx配置ip:端口+接口地址再次发请求到n...
  • 首先,错误的情况: ...spring-boot-starter-parent</artifactId> <groupId>org.springframework.boot</groupId> <version>2.1.5.RELEASE</version> </parent> <pro
  • SpringCloud项目打war包部署

    千次阅读 2018-05-31 09:14:05
    springcloud基于springboot在开发上有很大的优势,在开发时可以直接通过jar包的形式来启动运行,也就是内嵌tomcat,但在实际项目部署当中,还是使用tomcat部署比较方便,而且也有现成的监控。以下就是打war的流程...
  • 最新SpringCloud面试题及答案【附答案解析】SpringCloud面试题及答案,SpringCloud最新面试题及答案,SpringCloud面试题新答案已经全部更新完了,有些答案是自己总结的,也有些答案是在网上搜集整理的。这些答案难免...
  • 最近几天要把springcloud部署...首先springcloud项目,部署tomcat需要做些修改:  1.修改pom文件中的tomcat引入,增加servlet的jar包。另,如果pom文件中有jetty的引用,注释或删掉它。修改打包类型为war包。  2
  • 目录一、业务场景介绍二、Spring Cloud核心组件:Eureka三、Spring Cloud核心组件:Feign四、Spring Cloud核心组件:Ribbon五、Spring ...
  • http://localhost:8088/hello?name=springcloud http://localhost:8084/hello?name=springcloud http://localhost:8761/ 8085:consumer端口,每次刷新返回结果和上次不同 8088 8084:producer端口 8761:Eureka端口 2....
  • 1.以spring boot为基础新建一个eureka的项目&lt;build&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;...
  • 一,微服务简介 二,SpringCloud Alibaba微服务解决方案 三,构建SpringCloud 聚合项目并进行环境初始化
  • spring cloud部署tomcat中一直运行正常,突然有一天看到日志中出现cannot parse request body错误。 回想了一下自己最近的操作:对代码和配置
  • 在之前的文章 《Nacos 本地单机版部署步骤和使用》 中,大家应该了解了 Nacos 是什么?其中 Nacos 提供了动态配置服务功能 一、Nacos 动态配置服务是什么? 官方是这么说的: Nacos 动态配置服务是什么? 动态配置...
  • 一、安装Jenkins linux安装Jenkins方式有很多,这里介绍yum、rpm、tomcat部署
  • ** 微服务项目如果使用jar包部署,非常不方便管理,而制作成docker镜像,上传至仓库后,可以极大的方便运维人员管理**

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,122
精华内容 6,848
关键字:

tomcat部署springcloud

spring 订阅