**

微服务打包和部署

**

  1. 一、为什么要部署微服务
    为什么部署微服务
    我们的项目是在win系统上写的,因为win系统会随着运行时间而变得越来越卡,所以我们需要将项目部署到liunx系统上,因为liunx系统不像win系统,liunx不会因为运行时间而变得越来越卡,而且liunx系统的安全性也比win系统高。
    为什么部署微服务:
    微服务是将一个大的项目分为几个小的模块,这样做的目的是为了我们后期的维护和扩展功能,如何我们部署一个整个的项目的话,那么后期添加功能必须要先将项目下线,这样给用户的体验感会变得非常的差,不仅如此如果出现一些问题的话我们也很难找到根本错误,但是如果分为多个模块的话我们就可以不仅可以快速的找到错误的根本,如果后期需要添加新功能的话我们只需要将添加功能的模块下线就可以了,这样其他的功能模块也可以正常运行。
    二、maven打包方式有两种,jar包和war包
    1、jar包优缺点
    优点:
    如果出现一些报错情况可以快速解决,而且jar自带tomcat启动器这样就可以让我们
    省去很多步骤。
    缺点:
    启动的时间太长了,而且启动完以后会占用Xshell的当前窗口,也就是说如果我们
    部署微服务这种需要开启多个tomcat服务器的项目需要开启多个窗口。
    2、war包优缺点
    优点:
    启动比较快,而且不会占用当前窗口,这样我们就不用去创建那么多的Xshell的窗
    口了。
    缺点:
    如果项目出现问题很难找到问题所在,比如404让我痛疼了两天才解决,而且操作
    比较复杂,需要去导入很多tomcat避免端口号冲突,掌控性太不高
    三、jar包打包方式
    首先我们要保证我们的mysql要开启远程访问,否者会被拒绝链接
    win加R
mysql -u roo -p

微服务通用部署架构图 微服务 部署_部署


成功登入

微服务通用部署架构图 微服务 部署_微服务通用部署架构图_02


然后输入要被开启远程访问的数据库

这里我的库是pan

use pan

这是查看库里的

show tables

微服务通用部署架构图 微服务 部署_maven_03


微服务通用部署架构图 微服务 部署_微服务通用部署架构图_04

GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;

这样算是编辑完了,但是我们需要将将它执行以下

flush privileges;

微服务通用部署架构图 微服务 部署_部署_05


这是查看是否成功

select host,user from user;

微服务通用部署架构图 微服务 部署_部署_06


接下来我们来打包:

父工程的pom依赖,因为父工程会被子模块继承所以打包的类型不是jar,也不是war而是pom

1、第一步pom依赖

微服务通用部署架构图 微服务 部署_微服务通用部署架构图_07

<?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>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.zhiyou100</groupId>
    <artifactId>server-parent</artifactId>
    <!--注意这里是pom-->
    <packaging>pom</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>server-parent</name>
    <description>父类</description>

    <!--版本定义-->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <!--springcloud版本  从A到G-->
        <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
    </properties>

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

    <dependencyManagement>
        <dependencies>
            <!--引入springcloud依赖-->
            <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>
        </plugins>
    </build>

</project>

2、我们需要将父工程放到maven本地仓库,因为子模块打包的时候会调用父工程的依赖。

微服务通用部署架构图 微服务 部署_微服务通用部署架构图_08


微服务通用部署架构图 微服务 部署_微服务_09


微服务通用部署架构图 微服务 部署_部署_10


微服务通用部署架构图 微服务 部署_部署_11


微服务通用部署架构图 微服务 部署_微服务通用部署架构图_12


微服务通用部署架构图 微服务 部署_spring_13


微服务通用部署架构图 微服务 部署_微服务通用部署架构图_14


这样我们就将父工程打包成pom包了

3、然后我们来打包注册中心

第一步pom依赖:

微服务通用部署架构图 微服务 部署_部署_15

<?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>jar</packaging>
    <name>weather-eureka</name>
    <description>服务注册中心</description>
    <dependencies>
        <!--这里是服务注册中心-->
        <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/

第三步双击即可:

微服务通用部署架构图 微服务 部署_maven_16


4、接下来我们来打包存有数据的子工程

第一步引入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>jar</packaging>
    <name>city-data</name>
    <description>城市数据获取</description>
    <dependencies>
        <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>

微服务通用部署架构图 微服务 部署_微服务通用部署架构图_17


第二步:

这里我们需要修改一下配置文件

微服务通用部署架构图 微服务 部署_微服务_18

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

第三步:

双击即可

微服务通用部署架构图 微服务 部署_spring_19

然后是在liuinx系统上运行jar包

java -jar 这里是打包的包名

如果想让你的jar项目在后台运行在包名后面加上

>temp.txt &