欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

linux系统部署微服务war包

程序员文章站 2022-03-26 21:38:30
...
  • 如果因为MySQL的问题参考
  • war打包比较jar打包麻烦一点
  • 我们微服务会有一个父工程,父工程打包的名字跟子包打包的名字不太一样
  • linux系统部署微服务war包
  • 这里是代码
  • 
        <packaging>pom</packaging>

     

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

  • linux系统部署微服务war包

  • linux系统部署微服务war包

  • linux系统部署微服务war包

  • linux系统部署微服务war包

  • linux系统部署微服务war包

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

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

  • pom文件

  • linux系统部署微服务war包

  • <?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方法

  • linux系统部署微服务war包

  • 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即可

  • linux系统部署微服务war包

  • linux系统部署微服务war包

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

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

  • 第一步pom文件

  • linux系统部署微服务war包

  • <?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>
    

    然后配置文件

  • linux系统部署微服务war包

  • #这里是开启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";
        }
    }

    然后打包

  • linux系统部署微服务war包

  • linux系统部署微服务war包

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

  • 再写一个消费者就ok了

  • 同样第一步pom文件

  • linux系统部署微服务war包

  • <?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层这里要调用提供者服务

  • linux系统部署微服务war包

  • 因为我这个是在外网上部署的所以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系统部署微服务war包

  • linux系统部署微服务war包

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

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

  • linux系统部署微服务war包

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

  • linux系统部署微服务war包

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

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

  • linux系统部署微服务war包

  • linux系统部署微服务war包

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

  • vi server.xml

    linux系统部署微服务war包

  • linux系统部署微服务war包

  • linux系统部署微服务war包

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

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

  • linux系统部署微服务war包

  • 也是修改server.xml文件

  • vi server.xml

    linux系统部署微服务war包

  • linux系统部署微服务war包

  • linux系统部署微服务war包

  • 同样这里也是五处

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

  • linux系统部署微服务war包

  • linux系统部署微服务war包

  • linux系统部署微服务war包

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

  • 这里是我的tomcat的路径

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

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

  • chmod u+x *.sh

    然后

  • ./startup.sh

    其他的两个tomcat也是一样的

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

linux系统部署微服务war包

这样算是运行成功了