• 如果因为MySQL的问题参考、

  • 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());
    }

微服务项目前台打包 微服务war包_war包部署

  • 然后我们就可以去linux部署了
  • 上来二话不说先复制3个tomcat
  • 我这里用了一下工具,毕竟window系统上好复制
  • 这样我们的三个tomcat就弄好了,前提是Linux系统上已将安装了Java和配置了Java的环境变量
  • 然后我们来修改一下tomcat的端口号防止冲突,我们这里只修改两个就好
  • 然后我们来编辑一下server.xml这个文件
vi server.xml

微服务项目前台打包 微服务war包_微服务项目前台打包_02

  • 我们这里一共修改了五处
  • 接下来我们修改下一个tomcat
  • 也是修改server.xml文件
vi server.xml

微服务项目前台打包 微服务war包_war打包_03

  • 同样这里也是五处
  • 接下来我们就将大好的包传输到相应的tomcat下的webapps下
  • 弄完以后我们需要运行tomcat,运行的话需要到bin目录下
  • 这里是我的tomcat的路径
cd /usr/local/tomcat/apache-tomcat-9.0.0.M13/bin/

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

chmod u+x *.sh

然后

./startup.sh

其他的两个tomcat也是一样的

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

微服务项目前台打包 微服务war包_spring_04

这样算是运行成功了