精华内容
下载资源
问答
  • spring-cloud是基于spring boot的,默认提供内嵌的tomcat,所以打包直接生成jar包,用java -jar命令就可以启动。但是,有时候我们更希望一个tomcat来管理多个项目,这种情况下就需要项目是war格式的包而不是jar格式...

    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

    就好了。

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

     

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

    展开全文
  • Docker网络配置部署SpringCloud项目Docker网络配置桥接模式仅主机模式下载tomactDocker网络模式介绍问题Docker部署SpringCloud项目 Docker网络配置 桥接模式 仅主机模式 下载tomact sudo docker pull tomcat ...

    Docker网络配置

    桥接模式

    在这里插入图片描述

    仅主机模式

    在这里插入图片描述

    下载tomact

    sudo docker pull tomcat
    

    在这里插入图片描述

    Docker网络模式介绍

    Docker在创建容器时有四种网络模式:bridge/host/container/none,bridge为默认不需要用–net去指定,其他三种模式需要在创建容器时使用–net去指定

    1.bridge模式(默认模式)
    docker run时使用–net=bridge,这种模式会为每个容器分配一个独立的Network Namespace,
    同一个宿主机上的所有容器会在同一个网段下,相互之间是可以通信的

    注1:bridge为默认模式,不需要使用参数–net去指定,使用了–net参数反而无效
    注2:bridge模式无法指定容器IP(但非绝对

    通过镜像创建容器 并运行tomcat容器
    feba8d001e3f:容器id

    docker run -it --name mytomact -p 8081:8080 feba8d001e3f
    
    

    问题

    然后通过外网访问不了
    在这里插入图片描述
    此时通过docker ps 查看tomcat容器运行状态

    docker ps
    

    在这里插入图片描述
    确认一下是不是0.0.0.0 如果时代表允许外网访问,当然这并不是小编遇到的外网不能访问tomcat的原因,也并不是这个也不是端口未开放的低级问题,继续看下面。

    我们通过 docker exec -it tomcat02 /bin/bash 命令进入tomcat的根目录

    docker exec -it  mytomact /bin/bash
    

    在这里插入图片描述
    然后ls查看一下

    ls -l
    

    在这里插入图片描述
    里面有一个 webapps 和 webapps.dist
    webapps目录里面没有任何的东西,很奇怪;原本webapps里面的文件却在webapps.dist目录里面
    所以,我们只需要将其文件全部拷贝进去即可
    命令:

    cp -r webapps.dist/* webapps
    

    在这里插入图片描述
    在这里插入图片描述
    2、 host模式
    docker run时使用–net=host,容器将不会虚拟出IP/端口,而是使用宿主机的IP和端口

    docker run -it --name mytomcat03 --net=host feba8d001e3f
    

    在这里插入图片描述
    注1:host模式不能使用端口映射和自定义路由规则,这些都与主机一致,-p 与-icc 参数是无效的
    然后去访问发现无法获取资源,与前面的问题一样
    在这里插入图片描述

    [root@192 ~]# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    714b8ebd342b feba8d001e3f “catalina.sh run” 2 hours ago Up 58 minutes 0.0.0.0:8082->8080/tcp mytomact02
    1611f9a85aa6 feba8d001e3f “catalina.sh run” 2 hours ago Up About an hour 0.0.0.0:8081->8080/tcp mytomact
    [root@192 ~]# docker ps -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    5260214893fa feba8d001e3f “catalina.sh run” About a minute ago Exited (130) 48 seconds ago mytomcat03
    714b8ebd342b feba8d001e3f “catalina.sh run” 2 hours ago Up 59 minutes 0.0.0.0:8082->8080/tcp mytomact02
    1611f9a85aa6 feba8d001e3f “catalina.sh run” 2 hours ago Up About an hour 0.0.0.0:8081->8080/tcp mytomact
    a83bcb07a0c2 jre:v1.0 “/bin/sh” 43 hours ago Exited (255) 22 hours ago admiring_chebyshev
    370f6f460564 jdk8:v2.0 “/bin/sh” 44 hours ago Exited (255) 22 hours ago zen_benz
    [root@192 ~]# docker start 5260214893fa
    5260214893fa
    [root@192 ~]# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    5260214893fa feba8d001e3f “catalina.sh run” 2 minutes ago Up 22 seconds mytomcat03
    714b8ebd342b feba8d001e3f “catalina.sh run” 2 hours ago Up About an hour 0.0.0.0:8082->8080/tcp mytomact02
    1611f9a85aa6 feba8d001e3f “catalina.sh run” 2 hours ago Up About an hour 0.0.0.0:8081->8080/tcp mytomact

    [root@192 ~]# docker exec -it mytomcat03 /bin/bash
    root@192:/usr/local/tomcat# ls -l
    total 128
    -rw-r–r-- 1 root root 18982 Dec 3 11:48 BUILDING.txt
    -rw-r–r-- 1 root root 5409 Dec 3 11:48 CONTRIBUTING.md
    -rw-r–r-- 1 root root 57092 Dec 3 11:48 LICENSE
    -rw-r–r-- 1 root root 2333 Dec 3 11:48 NOTICE
    -rw-r–r-- 1 root root 3257 Dec 3 11:48 README.md
    -rw-r–r-- 1 root root 6898 Dec 3 11:48 RELEASE-NOTES
    -rw-r–r-- 1 root root 16507 Dec 3 11:48 RUNNING.txt
    drwxr-xr-x 2 root root 4096 Dec 18 08:58 bin
    drwxr-xr-x 1 root root 22 Dec 20 08:35 conf
    drwxr-xr-x 2 root root 4096 Dec 18 08:57 lib
    drwxrwxrwx 1 root root 177 Dec 20 08:35 logs
    drwxr-xr-x 2 root root 134 Dec 18 08:57 native-jni-lib
    drwxrwxrwx 2 root root 30 Dec 18 08:57 temp
    drwxr-xr-x 2 root root 6 Dec 18 08:57 webapps
    drwxr-xr-x 7 root root 81 Dec 3 11:45 webapps.dist
    drwxrwxrwx 2 root root 6 Dec 3 11:43 work
    root@192:/usr/local/tomcat# cp -r webapps.dist/* webapps
    root@192:/usr/local/tomcat#

    在这里插入图片描述

    3.container模式(略)

    4.none模式(略)

    5.跨主机通信(略)
    以上四种均未跨主机,也就是说容器均运行在一台宿主机上,但实际生产环境不可能只用一台来跑。
    肯定会用到多台,那么多台主机之间的容器如何通信
    1.使用路由机制打通网络
    2.使用Open vSwitch(OVS)打通网络
    3.使用flannel来打通网络
    4.使用Quagga来实现自动学习路由
    注1:详情见
    https://www.cnblogs.com/yy-cxd/p/6553624.html

    Docker部署SpringCloud项目

    先确保工程能够正常访问
    在这里插入图片描述
    以这五个部署为例

    idea中springcloud项目打jar包
    1.在idea运行springcloud项目,不报错,均可正常访问

    2.修改主模块的pom

    <!-- 1.注意更改为pom而不是jar -->
    <packaging>pom</packaging> 
    

    在这里插入图片描述
    3.在各个子模块的pom.xml文件中添加插件依赖

     <build>
            <plugins>
                <!--添加maven插件-->
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <!--添加自己的启动类路径!-->
                        <mainClass>com.liuchunming.microserviceeurekaserver.MicroserviceEurekaServerApplication</mainClass>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <!--可以把依赖的包都打包到生成的Jar包中-->
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    

    4.点击工程——》Run maven
    先双击clean(去掉之前打的包target文件夹)——》再创建install
    在这里插入图片描述
    在这里插入图片描述

    为了避免jar出错,将jar拷贝出来查看一下大小并通过cmd测试是否能够运行

    在这里插入图片描述

    我们前面通过一个工程跑三个服务是用过yml文件,加上运行环境进行了激活
    这样也可以通过命令激活

    java -jar microservice-eureka-server.jar --spring.profiles.active=eureka2001
    java -jar microservice-eureka-server.jar --spring.profiles.active=eureka2002
    java -jar microservice-student-provider-hystrix.jar --spring.profiles.active=provider-hystrix-1005
    java -jar microservice-student-provider-hystrix.jar --spring.profiles.active=provider-hystrix-1006
    java -jar microservice-student-consumer-feign.jar
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    docker部署springcloud
    创建个apps文件夹把jar上传进来
    在这里插入图片描述

    1.宿主机修改hosts文件
    vi /etc/hosts
    ## 在里面添加要映射的域名即可

    127.0.0.1  eureka2001.liuchunming.com
    127.0.0.1  eureka2002.liuchunming.com
    

    在这里插入图片描述
    3.使用jre:8镜像启动容器,并挂载指定目录为数据卷

    docker run -d \
           -it \
           --net=host \
           --name eureka-server-peer2 \
           --mount type=bind,source=/liuchunming/apps,target=/liuchunming/apps \
           3e08b2946389
           镜像ID   
    

    在这里插入图片描述
    开两个容器就该个名字同样操作即可

    在这里插入图片描述
    注1:jre:8是自定义镜像,已安装jre1.8

    4.进入容器,java命令启动微服务

    docker exec -it eureka-server-peer1 /bin/sh
    

    在这里插入图片描述

    查看一下容器

    ls -l
    

    在这里插入图片描述

    进入数据卷映射过去的路径

     cd /liuchunming/apps/
    

    在这里插入图片描述
    再输入jar命令启动即可:命令上面贴了
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    由于虚拟机的内存不够就没全部服务都开启了!!

    end…

    展开全文
  • 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包放入...

    1.本地准备Tomcat环境
    2.jenkins下载地址https://jenkins.io/zh/download/
    选择war包下载

    image.png


    下载后把war包放入Tomcat的webapps目录下,之后启动Tomcat


    3.浏览器输入http://localhost:8080/jenkins/

    进入jenkins页面(Tomcat端口号为8080),等待...

    image.png


    4.打开提示目录下的文件,复制密码,输入后点击继续

    image.png


    5.选择安装推荐插件

    image.png


    然后等待插件安装完成,若有安装失败的插件,点击重试

    image.png


    6.新建一个管理用户,然后点击保存并完成

    image.png


    继续点击保存并完成

    image.png


    点击开始使用jenkins

    image.png


    进入Jenkins页面

    image.png


    7.点击管理Jenkins,若出现下图,只需要重启Tomcat即可

    image.png


    点击如下图,配置Maven、JDK等

    image.png


    下图为JDK配置

    image.png


    下图为Maven配置

    image.png


    点击保存即可


    8.点击插件管理,安装需要的插件

    image.png


    需要安装如下几个插件

    image.png

     

    image.png


    9.回到首页,点击新建Item

    image.png


    选择Maven,输入任务名称,点击确定

    image.png


    进入任务配置页面

    image.png


    基本配置如下

    image.png


    源码管理选择Git,输入项目管理的git地址

    image.png


    新增一个Git账号

    image.png


    输入后点击添加

    image.png


    构建环境配置

    image.png


    构建配置

    image.png

     

    # 表示构建微服务所有模块 并且跳过测试
    clean package -Dmaven.test.skip=true
    # 表示构建置顶文件夹模块 并且跳过测试
    -pl SystemDbJpa -am clean package -Dmaven.test.skip=true
    

    构建之后选择执行shell脚本

     

    image.png

     

    脚本如下,以我Mac为例,可自行修改

    #!/bin/bash
    #服务名称
    SERVER_NAME=opSpringCloud-JurisdictionJpa
    # 源jar路径,mvn打包完成之后,target目录下的jar包名称,也可选择成为war包,war包可移动到Tomcat的webapps目录下运行,这里使用jar包,用java -jar 命令执行  
    JAR_NAME=JurisdictionJpa-0.0.1-SNAPSHOT
    # 源jar路径  
    #/usr/local/jenkins_home/workspace--->jenkins 工作目录
    #demo 项目目录
    #target 打包生成jar包的目录
    JAR_PATH=/Users/zhangyongjia/.jenkins/workspace/opSpringCloud/SystemDbJpa/target/
    
    echo "查询进程id-->$SERVER_NAME"
    PID=`ps -ef | grep "$SERVER_NAME" | awk '{print $2}'`
    echo "得到进程ID:$PID"
    echo "结束进程"
    for id in $PID
    do
        kill -9 $id  
        echo "killed $id"  
    done
    echo "结束进程完成"
    
    cd $JAR_PATH
    #修改文件权限
    chmod 755 $JAR_NAME.jar
    
    #java -jar $JAR_NAME.jar
    
    #后台运行
    BUILD_ID=dontKillMe nohup java -jar  $JAR_NAME.jar  &
    

    点击保存


    10.回到任务,可点击立即构建

     

    image.png

     

    点击进入构建过程,然后点击控制台输出

     

    image.png


    构建完成之后出现蓝点表示构建成功

    image.png


    之后输入项目访问地址,测试即可

    11.因为之前配置了每5分钟去Git查询一次,若有更新,就拉取更新之后重新构建,同时也配置了可以通过发送HTTP请求立即构建

    展开全文
  • 继上一边博客写了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包部署即可。

    展开全文
  • k8s部署Spring Cloud应用

    万次阅读 多人点赞 2020-01-15 01:24:10
    jdk镜像 cat <<EOF > Dockerfile FROM centos:7 ADD jdk-8u212-linux-x64.tar.gz /opt/ ENV JAVA_HOME=/opt/jdk1.8.0_212 ... PATH=$PATH:/opt/jdk1.8.0_212/bin:/usr/tomcat/bin ENTRYPOINT bash EOF doc...
  •   在基于老版本的springcloud中使用tomcat部署项目是比较麻烦的,你可能需要在pom.xml中手动排除tomcat来部署到线上环境,而排除tomcat后eclipse中又无法使用SpringBootApplication类启动工程。   在新版本的...
  • Spring Cloud 注册中心在tomcat部署

    万次阅读 2017-08-19 08:41:01
    前言最近刚刚接触spring boot 和spring cloud,只知道可以直接通过main方法启动服务,一直不会将项目部署tomcat中,今天学了一下,做个记录备忘. 步骤pom文件在pom文件中引入spring-boot-starter-web,然后排除掉内置的...
  • jenkins自动部署springcloud微服务

    千次阅读 2019-02-16 10:43:23
    官网下载jenkins.war, 将jenkins.war文件复制到tomcat文件下的webapps目录下,启动tomcat。 jenkins在启动时,默认给我们生成了一个admin用户,密码在启动时的日志信息中,  通过localhost:8888/jenkins/访问,...
  • 之前使用jar包部署的,jar包部署有个问题就是jar包不解压,不方便在定位现场问题时修改配置文件。所以感觉以war包形式部署比较好。那么就需要做如下几方面工作:1、修改各个...--引入spring boot的web--&gt; ...
  • 一.配置docker环境 注意:本docker系统镜像环境为centos7 ,通过...1.项目的基础环境 centos7 ssh jdk8 tomcat8 (1) docker pull centos:7 (2)找一个文件路径存放编写cento7-ssh的Dockerfile文件 FROM centos:7 MAIN...
  • 由于最近公司启动了微服务项目,使用框架springcloud搭建微服务,因此开始了解java。 由于工作中用的基本为apache、nginx,发现java程序需要部署tomcat下,因此开始漫长的 tomcat“采”坑之路首先说先项目基本情况...
  • 我有个spring cloud gateway的项目,在idea中可以正常运行,但是部署tomcat时不知道怎么部署。下面是我的pom文件信息。 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=...
  • SpringCloud微服务集群部署到一个Tomcat中 只有部署步骤以及注意事项,不包含具体实现 部署步骤 1.将所有微服打成war包 2.将war包拷贝到tomcat中 注意事项 1.eureka server地址为 http://ip:port/项目名/eureka ...
  • 第二步:查看spring boot应用是否还有用户相关的线程:即tomcat的用户线程是否都运行完毕,比如一个用户的查询已经进入改应用,应该等待其响应完毕。 第三步:如果没有正在运行的线程,则停掉应用,发布版本。如果有...
  • Linux下Spring Cloud多项目部署tomcat

    千次阅读 2018-05-02 21:05:15
    去除spring boot内置Tomcat 修改tomcat内存大小 修改Tomcat配置文件,配置多个项目 去除spring boot内置Tomcat 1.去除jar包依赖 &lt;dependency&gt; &lt;groupId&gt;org.spring...
  • SpringCloud Jar2war部署tomcat容器中

    千次阅读 2018-01-14 11:40:00
    1.修改 eureka,zuul,自己的微服务的pom 打包方式 packaging>warpackaging> 引入依赖 org.springframework.boot ...设置打包名称为ROOT,最后打包出来都是ROOT.war,每个微服务部署到不同的tomcat容器中  
  • 1、修改pom.xml 父工程的pom.xml中的 <packaging>pom<...--在父工程的pom.xml里,去除springboot web自带的tomcat,自己添加tomcat、servlet-api 依赖--> <dependency> <group.
  • [img=https://img-bbs.csdn.net/upload/202008/15/1597467147_647778.png][/img]
  • Spring大家都知道Spring是2002年Rod Johnson 开发的框架,他成立了一个公司运营这玩意,当时公司叫interface 21;2008 年更名为 ...同年进行了一轮收购,拉拢了tomcat、apache、groovy社区的大神加入。200...
  • 怎样把已经开发的spring cloud 项目进行打包部署,其实过程和spring boot 的是一样的。经过摸索之后,才发现其实spring cloud 的每个Project 可以直接打成jar包运行,因为里面自带了tomcat容器。这也是spring cloud ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 394
精华内容 157
关键字:

tomcat部署springcloud

spring 订阅