linux系统部署微服务war包

  • 如果因为MySQL的问题参考、
  • https://blog.csdn.net/qq_42752463/article/details/103218126
  • war打包比较jar打包麻烦一点
  • 我们微服务会有一个父工程,父工程打包的名字跟子包打包的名字不太一样
  • 这里是代码
  • 
        <packaging>pom</packaging>

     

  • 我们还需要将父工程存放到maven仓库中

  • 然后打包成功,在子模块的pom文件里引用即可

  • 我们来看一下子模块如何打包

  • pom文件

  • <?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>com.zhiyou100</groupId>
            <!--这里是父工程的名字-->
            <artifactId>server-parent</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </parent>
        <groupId>com.zhiyou100</groupId>
        <artifactId>weather-eureka</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>war</packaging>
        <name>weather-eureka</name>
        <description>服务注册中心</description>
        <dependencies>
            <!--这里是将内置的tomcat关掉-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <scope>provided</scope>
            </dependency>
            <!--这里是服务注册中心-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            </dependency>
            <!--这里是web启动器,一定要加上-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>com.zhiyou100</groupId>
                <artifactId>server-parent</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
        </dependencies>
    </project>
    

     

  • 然后我们来配置服务注册中心

  • #这里是防止端口号冲突所以改为8000
    server.port=8000
    #这里是服务中心的名字
    spring.application.name=weather-eureka
    #这里是本机的名字
    eureka.instance.hostname=localhost
    #这里是不将本服务注册到服务中心
    eureka.client.register-with-eureka=false
    eureka.client.fetch-registry=false
    #这里是服务注册中心的核心配置
    eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

    主类这里继承SpringBootServletInitializer,还实现SpringApplicationBuilder方法

  • import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
    
    @SpringBootApplication
    @EnableEurekaServer
    public class WeatherEurekaApplication extends SpringBootServletInitializer {
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            // TODO Auto-generated method stub
            return builder.sources(this.getClass());
        }
        public static void main(String[] args) {
            SpringApplication.run(WeatherEurekaApplication.class, args);
        }
    
    }

    接下来进行打包,双击package即可

  • 这样我们的服务注册中心打包完成了

  • 然后我们这里写一个提供者

  • 第一步pom文件

  • <?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>com.zhiyou100</groupId>
            <artifactId>server-parent</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </parent>
        <groupId>com.zhiyou100</groupId>
        <artifactId>city-data</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>war</packaging>
        <name>city-data</name>
        <description>城市数据获取</description>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>com.zhiyou100</groupId>
                <artifactId>server-parent</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
            <!--导入mybatis依赖-->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.1.1</version>
            </dependency>
            <!--导入mysql依赖-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.46</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!--eureka-client启动器-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>RELEASE</version>
                <scope>compile</scope>
            </dependency>
        </dependencies>
    
    </project>
    

    然后配置文件

  • #这里是开启Redis虚拟机的ip地址
    spring.redis.host=139.224.66.202
    #这里是Redis端口号6379
    spring.redis.port=6379
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    #这里是数据库的账号,一般都是root
    spring.datasource.username=root
    #这里是数据库密码
    spring.datasource.password=这里是你的mysql密码
    #这里是数据库链接池,我的外网服务器的ip是139.224.66.202,数据库名是pan
    spring.datasource.url=jdbc:mysql://139.224.66.202/pan
    #这里是扫描mapper下的xml文件
    mybatis-plus.mapper-locations=classpath:mapper/*Mapper.xml
    #为了防止端口号冲突,这里我们修改一下端口号
    server.port=8321
    #提交时的名字
    spring.application.name=city-data
    #提交到服务注册中心,我的外网服务器的ip地址是139.224.66.202,tomcat端口号是8080,注册中心打包的名字是weather-eureka,
    #注册中心的名字是eureka
    eureka.client.service-url.defaultZone=http://139.224.66.202:8080/weather-eureka/eureka/
    

    主类上同样

  • extends SpringBootServletInitializer

    方法

  • @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            // TODO Auto-generated method stub
            return builder.sources(this.getClass());
        }

    controller层来一个可以被访问接口

  • import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class Hello {
        @RequestMapping("gethello")
        public String gethello(){
            return "Hello word";
        }
    }

    然后打包

  • 这样我们的提供者就打包完成了

  • 再写一个消费者就ok了

  • 同样第一步pom文件

  • <?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>com.zhiyou100</groupId>
            <artifactId>server-parent</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </parent>
        <groupId>com.zhiyou100</groupId>
        <artifactId>city-wather</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>war</packaging>
        <name>city-wather</name>
        <description>展示</description>
    
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>com.zhiyou100</groupId>
                <artifactId>server-parent</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
            <!--lombok依赖-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!--feign依赖-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-openfeign</artifactId>
                <version>2.0.0.RELEASE</version>
            </dependency>
            <!--client依赖-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
        </dependencies>
    </project>
    

    然后配置文件

  • #这里是端口号为了防止端口号冲突改为了8312
    server.port=8312
    #这里是本服务的提交名字
    spring.application.name=city-wather
    #提交到服务注册中心,我的外网服务器的ip地址是139.224.66.202,tomcat端口号是8080,注册中心打包的名字是weather-eureka,
    #注册中心的名字是eureka
    eureka.client.service-url.defaultZone=http://139.224.66.202:8080/weather-eureka/eureka/
    #这里是熔断器可以考虑加或者不加
    feign.hystrix.enabled=true
    

    创建一个service层这里要调用提供者服务

  • 因为我这个是在外网上部署的所以url地址思考一下是否要加

  • 如果出现http//city-wather/gethello可以考虑加上

  • 然后我们在写一个controller层用来调用service层

  • import com.zhiyou100.citywather.service.ICityService;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import javax.annotation.Resource;
    
    @RestController
    public class Hello {
        @Resource
        private ICityService iCityService;
        @RequestMapping(value = "hello")
        public String hello(){
            return iCityService.gethello();
        }
    }

    这里的主类也是一样的

  • extends SpringBootServletInitializer
    @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            // TODO Auto-generated method stub
            return builder.sources(this.getClass());
        }

  • 然后我们就可以去linux部署了

  • 上来二话不说先复制3个tomcat

  • 我这里用了一下工具,毕竟window系统上好复制

  • 这样我们的三个tomcat就弄好了,前提是Linux系统上已将安装了Java和配置了Java的环境变量

  • 然后我们来修改一下tomcat的端口号防止冲突,我们这里只修改两个就好

  • 然后我们来编辑一下server.xml这个文件

  • vi server.xml

  • 我们这里一共修改了五处

  • 接下来我们修改下一个tomcat

  • 也是修改server.xml文件

  • vi server.xml

  • 同样这里也是五处

  • 接下来我们就将大好的包传输到相应的tomcat下的webapps下

  • 弄完以后我们需要运行tomcat,运行的话需要到bin目录下

  • 这里是我的tomcat的路径

  • cd /usr/local/tomcat/apache-tomcat-9.0.0.M13/bin/

    这里我们还需要加上一句话,不然没法运行

  • chmod u+x *.sh

    然后

  • ./startup.sh

    其他的两个tomcat也是一样的

  • 运行完成以后我们看一下服务注册中心

这样算是运行成功了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值