生产环境搭建和部署

1 部署总览

1.1 数据架构·

在这里插入图片描述

1.2 服务部署

在这里插入图片描述

2 服务总览

服务名称服务目录端口服务数据映射目录
mysql./mysql3306数据库文件:./db
初始化脚本:./init/init.sql
apollo-configservice./apollo/apollo-configservice8080日志:./logs/100003171
apollo-adminservice./apollo/apollo-adminservice8090日志:./logs/100003172
apollo-portal./apollo/apollo-portal8070日志:./logs/100003173
rmqnamesrv./rmq9876数据:./data/store
日志:./data/logs
rmqbroker./rmq10909
10911
配置:./data/brokerconf/broker.conf
rmqconsole./rmq60000
elastic-search./es9200
9300
配置:./elasticsearch.yml
数据:./data
es-head./es9100
logstash./logstash
zookeeper./zk21811
redis./redis6379数据:./data
wanxindepository./wanxindepository55010日志:./logs
wanxinp2p-discover-server./wanxinp2p-discover-server53000日志:./logs
wanxinp2p-gateway-server./wanxinp2p-gateway-server53010日志:./logs
wanxinp2p-uaa-service./wanxinp2p-uaa-service53020日志:./logs
wanxinp2p-account-service./wanxinp2p-account-service53030日志:./logs
wanxinp2p-consumer-service./wanxinp2p-consumer-service53050日志:./logs
wanxinp2p-transaction-service./wanxinp2p-transaction-service53060日志:./logs
wanxinp2p-depository-agent-service./wanxinp2p-depository-agent-service53070日志:./logs
wanxinp2p-repayment-service./wanxinp2p-repayment-service53080日志:./logs
sailing./sailing56085日志:./logs
wanxinp2p-web./web8081
wanxinp2p-admin./admin8079

3 部署说明

3.1 安装Docker

使用版本:Docker version 18.09.7

3.1.1 卸载旧版本(可选)

  1. 执行如下命令,检查是否安装了旧版本:

    [root@node2-vm03 ~]# docker -v
    Docker version 1.13.1, build b2f74b2/1.13.1
    
  2. 卸载docker

    sudo yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-selinux \
                      docker-engine-selinux \
                      docker-engine
    
  3. 删除docker数据文件

    sudo rm -rf /var/lib/docker
    

3.1.2 安装启动

  1. 安装

    sudo yum install -y docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm
    
    sudo yum install -y containerd.io-1.2.2-3.el7.x86_64.rpm
    
    sudo yum install -y docker-ce-cli-18.09.7-3.el7.x86_64.rpm
    
    sudo yum install -y docker-ce-18.09.7-3.el7.x86_64.rpm
    
  2. 启动

    # 启动
    sudo systemctl start docker
    
    # 检查
    docker -v 
    

3.2 安装Docker Compose

使用版本:docker-compose version 1.22.0

#移动
sudo mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose

#添加执行权限
sudo chmod +x /usr/local/bin/docker-compose

#查看版本信息
docker-compose -v
#docker-compose version 1.22.0, build f46880fe

3.3 准备工作

3.3.1 新建各服务目录

使用mkdir命令新建一系列目录:

  1. 总目录:p2p
  2. 添加子目录:mysql
  3. 添加子目录:apollo
  4. 添加子目录:rmq
  5. 添加子目录:zk
  6. 添加子目录:redis
  7. 添加子目录:es
  8. 添加子目录:logstash
  9. 添加子目录:wanxinp2p
  10. 添加子目录:wanxindepository
  11. 添加子目录:web
  12. 添加子目录:admin

3.3.2 安装JDK1.8

docker load -i jdk.tar

3.4 安装MySQL

  1. 在mysql目录下新建init文件夹,从课件中找到init.sql并复制到该文件夹中
-- init.sql 修改允许远程登录
use mysql;
GRANT ALL ON *.* TO 'root'@'%';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123';
  1. 在mysql目录下编写docker-compose.yml
version: '3'
services:
    mysql:
        container_name: "mysql"
        image: "docker.io/mysql:5.7.21"
        restart: always
        network_mode: "host"
        hostname: mysql
        environment:
            MYSQL_ROOT_PASSWORD: "123"
            TZ: Asia/Shanghai
        command:
          --character-set-server=utf8mb4
          --collation-server=utf8mb4_general_ci
          --explicit_defaults_for_timestamp=true
        volumes:
            - "./db:/var/lib/mysql"
            - "./init:/docker-entrypoint-initdb.d/"
        ports:
            - "3306:3306"
  • MYSQL_ROOT_PASSWORD为root用户的密码

  • image为拉取镜像的地址和版本

  • volumes里面的参数为映射本地和docker容器里面的文件夹和目录

    ./db 用来存放了数据库表文件

    ./init存放初始化的脚本

  1. 导入mysql镜像:
docker load -i mysql.tar  或  docker-compose pull
  1. 在存放docker-compose.yml的文件夹下执行
#启动
docker-compose up
  1. 把本地p2p数据库中的所有数据导出为sql脚本,然后用SQLYog连接上边安装的mysql数据库,并执行sql脚本

3.5 安装Apollo

  1. 初始化Apollo数据库,把本地apollo数据库中的所有数据导出为sql脚本,然后用SQLYog连接上边安装的mysql数据库并执行脚本

  2. 在apollo目录下编写docker-compose.yml

    version: "3"
    
    services:
      apollo-configservice:                                         ##容器服务名
        container_name: apollo-configservice                        ##容器名
        build: apollo-configservice/                                ##Dockerfile路径
        image: apollo-configservice:1.6.0                           ##镜像名
        network_mode: "host"
        ports:
          - "8080:8080"
        restart: always    
        volumes:
          - "./logs/100003171:/opt/logs/100003171"    ##将/opt/logs/100003171目录挂载到宿主机的./logs/100003171方便在宿主机上查看日志
        environment:
          spring_datasource_url: "jdbc:mysql://127.0.0.1:3306/ApolloConfigDB?characterEncoding=utf8"
          spring_datasource_username: "root"
          spring_datasource_password: "123"
          JAVA_OPTS: "-Xms512m -Xmx512m -Xmn256m"
    
      apollo-adminservice:
        container_name: apollo-adminservice
        build: apollo-adminservice/
        image: apollo-adminservice:1.6.0
        network_mode: "host"
        ports:
          - "8090:8090"
        restart: always
        depends_on:
          - apollo-configservice
        volumes:
          - "./logs/100003172:/opt/logs/100003172"
        environment:
          spring_datasource_url: "jdbc:mysql://127.0.0.1:3306/ApolloConfigDB?characterEncoding=utf8"
          spring_datasource_username: "root"
          spring_datasource_password: "123"
          JAVA_OPTS: "-Xms512m -Xmx512m -Xmn256m"
    
      apollo-portal:
        container_name: apollo-portal
        build: apollo-portal/
        image: apollo-portal:1.6.0
        network_mode: "host"
        ports:
          - "8070:8070"
        restart: always
        depends_on:
          - apollo-adminservice
        volumes:
          - "./logs/100003173:/opt/logs/100003173"
        environment:
          spring_datasource_url: "jdbc:mysql://127.0.0.1:3306/ApolloPortalDB?characterEncoding=utf8"
          spring_datasource_username: "root"
          spring_datasource_password: "123"
          JAVA_OPTS: "-Xms512m -Xmx512m -Xmn256m -Ddev_meta=http://127.0.0.1:8080"
    
  3. 在apollo目录下新建apollo-adminservice目录,从课件中拷贝相关文件进来(jar+zip+Dockerfile)

  4. 在apollo目录下新建apollo-configservice目录,从课件中拷贝相关文件进来(jar+zip+Dockerfile)

  5. 在apollo目录下新建apollo-portal目录,从课件中拷贝相关文件进来(jar+zip+Dockerfile)

    注意:需要挨个检查并修改Dockerfile文件中的ip地址、账号、密码等数据

  6. 安装Apollo

docker-compose up

  1. 访问管理页面:http://ip:8070

3.6 安装RocketMQ

  1. 在rmq目录下新建data/brokerconf子目录,并在该目录下编写broker.conf
brokerClusterName = P2PCluster
brokerName = broker-p2p1
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
  1. 在rmq目录下编写docker-compose.yml
   version: '3.5'
   services:
     rmqnamesrv:
       image: foxiswho/rocketmq:server
       container_name: rmqnamesrv
       ports:
         - 9876:9876
       restart: always
       volumes:
         - ./data/logs:/opt/logs
         - ./data/store:/opt/store
       networks:
           rmq:
             aliases:
               - rmqnamesrv
   
     rmqbroker:
       image: foxiswho/rocketmq:broker
       container_name: rmqbroker
       ports:
         - 10909:10909
         - 10911:10911
       restart: always
       volumes:
         - ./data/logs:/opt/logs
         - ./data/store:/opt/store
         - ./data/brokerconf/broker.conf:/etc/rocketmq/broker.conf
       environment:
           NAMESRV_ADDR: "rmqnamesrv:9876"
           JAVA_OPTS: " -Duser.home=/opt"
           JAVA_OPT_EXT: "-server -Xms1g -Xmx1g -Xmn512m"
       command: mqbroker -c /etc/rocketmq/broker.conf
       depends_on:
         - rmqnamesrv
       networks:
         rmq:
           aliases:
             - rmqbroker
   
     rmqconsole:
       image: styletang/rocketmq-console-ng
       container_name: rmqconsole
       ports:
         - 60000:60000
       restart: always
       environment:
           JAVA_OPTS: "-Dserver.port=60000 -Xms512m -Xmx512m -Xmn256m -Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
       depends_on:
         - rmqnamesrv
       networks:
         rmq:
           aliases:
             - rmqconsole
   
   networks:
     rmq:
       name: rmq
       driver: bridge
  1. 导入镜像
docker load -i rmq.tar  或  docker-compose pull 
  1. 启动RocketMQ

docker-compose up -d

  1. 访问管理端:http://ip:60000

3.7 安装Zookeeper

  1. 在zk目录下编写docker-compose.yml

    version: '3'
    
    services:
      zookeeper:
        container_name: zookeeper
        image: zookeeper:3.4.14
        restart: always
        ports:
          - 21811:2181
        logging:
          driver: "json-file"
          options:
            max-size: "10k"
            max-file: "10"
    
  2. 导入镜像

docker load -i zk.tar 或 docker-compose pull
  1. 启动Zookeeper

docker-compose up

3.8 安装ES和Logstash

3.8.1安装ElasticSearch

  1. 在es目录下编写elasticsearch.yml

    cluster.name: wanxinp2p
    node.name: wanxinp2p_node
    network.host: 0.0.0.0
    discovery.zen.minimum_master_nodes: 1
    bootstrap.memory_lock: true
    discovery.type: single-node
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    xpack.security.enabled: false
    xpack.watcher.enabled: false
    xpack.monitoring.enabled: false
    
  2. 在es目录下编写docker-compose.yml

    version: '3'
    services:
      elastic:
        container_name: "elastic"
        image: bachue/elasticsearch-ik:6.2.4
        network_mode: "host"
        restart: "always"
        environment:
          - TZ='Asia/Shanghai'
          - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
        ulimits:
          memlock:
            soft: -1
            hard: -1
        volumes:
          - "./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml"
          - "./data:/usr/share/elasticsearch/data"
        ports:
          - "9200:9200"
          - "9300:9300"
      elasticsearch-head:
          image: wallbase/elasticsearch-head:6-alpine
          network_mode: "host"
          container_name: "elasticsearch-head"
          environment:
            TZ: Asia/Shanghai
          ports:
            - '9100:9100'
    
  3. 在es目录下新建data文件夹,并设置权限:

    chmod 777 p2p/es/data
    
  4. 导入镜像

docker load -i es.tar 或 docker-compose pull
  1. 启动:docker-compose up

  2. 访问es-head:http://localhost:9100

3.8.2 安装Logstash

  1. 在logstash目录下新建config和sql文件夹

  2. 从课件中找到logstash.yml、mysql-ef.conf,wanxinp2p_project_template.json,并复制到config目录下

    注意:需要检查上述文件的内容是否需要修改,例如ip地址、端口号、账号、密码等等

  3. 从课件中找到wanxinp2p-project_0.sql、wanxinp2p-project_1.sql,并复制到sql目录下

  4. 在logstash目录下编写docker-compose.yml

    version: '3'
    services:
      logstash:
        container_name: logstash
        build: ./
        image: docker.elastic.co/logstash/logstash:6.2.4
        volumes:
          - './config/logstash.yml:/usr/share/logstash/config/logstash.yml'
          - './pipeline:/usr/share/logstash/pipeline'
          - './config/wanxinp2p_project_template.json:/usr/share/logstash/config/wanxinp2p_project_template.json'
          - './sql:/usr/share/logstash/sql'
          - './logstash_metadata:/usr/share/logstash/config/logstash_metadata'
        network_mode: "host"
        restart: "always"
        environment:
          LS_JAVA_OPTS: "-Xmx256m -Xms256m"
          TZ: "Asia/Shanghai"
    
  5. 导入镜像

docker load -i logstash.tar 或  docker-compose pull
  1. 启动:docker-compose up

3.9 安装Redis

  1. 在redis目录下编写docker-compose.yml

    version: '3.0'
    services:
      redis:
        image: redis:5.0.5
        container_name: redis
        restart: always
        network_mode: "host"
        ports:
          - "6379:6379"
        volumes:
          - ./data:/data
        command: redis-server
        tty: true
    
  2. 导入镜像

docker load -i redis.tar 或  docker-compose pull
  1. 启动Redis

docker-compose up

3.10 部署验证码服务

  1. 在sailing目录下编写docker-compose.yml

    version: "3"
    
    services:
      sailing:
        container_name: sailing
        build: .
        image: sailing:1.0-SNAPSHOT
        network_mode: "host"
        ports:
          - "56085:56085"
        restart: always
        volumes:
          - "./logs:/logs"
        environment:
          JAVA_OPTS: "-Xms256m -Xmx256m -Xmn128m"
    
  2. 构建镜像

    docker-compose up

  3. 启动wanxindepository

    docker-compose up -d

  4. 测试:http://127.0.0.1:56085/sailing/swagger-ui.html

3.11 部署银行存管系统

  1. 初始化数据库

    从本地数据库中把银行存管系统数据导出为sql脚本,然后用SQLYog连接前面的MySQL数据并执行脚本

  2. 在IDEA中打包银行存管系统,并把jar文件复制到wanxindepository目录下

  3. 在wanxindepository目录下编写dockerFile文件

FROM openjdk:8-jre-alpine

ENV VERSION 1.0-SNAPSHOT

RUN echo "http://mirrors.aliyun.com/alpine/v3.8/main" > /etc/apk/repositories \
    && echo "http://mirrors.aliyun.com/alpine/v3.8/community" >> /etc/apk/repositories \
    && apk update upgrade \
    && apk add --no-cache procps curl bash tzdata \
    && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone

ADD wanxindepository-${VERSION}.jar wanxindepository.jar
RUN bash -c 'touch /wanxindepository.jar'

EXPOSE 55010

ENV JAVA_OPTS=""
ENTRYPOINT ["bash", "-c", "java $JAVA_OPTS -jar /wanxindepository.jar"]
  1. 在wanxindepository目录下编写docker-compose.yml
version: "3"

services:
  wanxindepository:
    container_name: wanxindepository
    build: .
    image: wanxindepository:1.0-SNAPSHOT
    network_mode: "host"
    ports:
      - "55010:55010"
    restart: always
    volumes:
      - "./data/apollo:/config-cache"
      - "./logs:/logs"
    environment:
      JAVA_OPTS: "-Dserver.port=55010 -Denv=dev -Dapollo.cluster=DEFAULT"
  1. 构建镜像

docker-compose up

  1. 启动wanxindepository

docker-compose up -d

3.12 部署平台

  1. 在wanxinp2p目录下添加对应微服务的子目录:

    • wanxinp2p-discover-server
    • wanxinp2p-gateway-server
    • wanxinp2p-uaa-service
    • wanxinp2p-account-service
    • wanxinp2p-consumer-service
    • wanxinp2p-transaction-service
    • wanxinp2p-depository-agent-service
    • wanxinp2p-repayment-service
  2. 在IDEA中打包各个微服务,并复制jar文件到对应的目录

    在这里插入图片描述

  3. 自己编写或从课件中找到Dockerfile文件并像上图一样复制到对应目录中

  4. 在wanxinp2p目录下编写docker-compose.yml

    version: "3"
    
    services:
      wanxinp2p-discover-server:
        container_name: wanxinp2p-discover-server
        build: wanxinp2p-discover-server/
        image: wanxinp2p-discover-server:1.0-SNAPSHOT
        network_mode: "host"
        ports:
          - "53000:53000"
        restart: always
        volumes:
          - "./logs:/logs"
        environment:
          SERVER_PORT: "53000"
          JAVA_OPTS: "-Xms512m -Xmx512m -Xmn256m"
    
      wanxinp2p-gateway-server:
        container_name: wanxinp2p-gateway-server
        build: wanxinp2p-gateway-server/
        image: wanxinp2p-gateway-server:1.0-SNAPSHOT
        network_mode: "host"
        ports:
          - "53010:53010"
        depends_on:
          - wanxinp2p-discover-server
        restart: always
        volumes:
          - "./logs:/logs"
        environment:
          SERVER_PORT: "53010"
          JAVA_OPTS: "-Xms512m -Xmx512m -Xmn256m -Dserver.port=53010 -Denv=dev -Dapollo.cluster=DEFAULT"
    
      wanxinp2p-uaa-service:
        container_name: wanxinp2p-uaa-service
        build: wanxinp2p-uaa-service/
        image: wanxinp2p-uaa-service:1.0-SNAPSHOT
        network_mode: "host"
        ports:
          - "53020:53020"
        depends_on:
          - wanxinp2p-discover-server
        restart: always
        volumes:
          - "./logs:/logs"
        environment:
          SERVER_PORT: "53020"
          JAVA_OPTS: "-Xms512m -Xmx512m -Xmn256m -Dserver.port=53020 -Denv=dev -Dapollo.cluster=DEFAULT"
    
      wanxinp2p-account-service:
        container_name: wanxinp2p-account-service
        build: wanxinp2p-account-service/
        image: wanxinp2p-account-service:1.0-SNAPSHOT
        network_mode: "host"
        ports:
          - "53030:53030"
        depends_on:
          - wanxinp2p-discover-server
        restart: always
        volumes:
          - "./logs:/logs"
        environment:
          SERVER_PORT: "53030"
          JAVA_OPTS: "-Xms512m -Xmx512m -Xmn256m -Dserver.port=53030 -Denv=dev -Dapollo.cluster=DEFAULT"
    
      wanxinp2p-consumer-service:
        container_name: wanxinp2p-consumer-service
        build: wanxinp2p-consumer-service/
        image: wanxinp2p-consumer-service:1.0-SNAPSHOT
        network_mode: "host"
        ports:
          - "53050:53050"
        depends_on:
          - wanxinp2p-discover-server
        restart: always
        volumes:
          - "./logs:/logs"
        environment:
          SERVER_PORT: "53050"
          JAVA_OPTS: "-Xms512m -Xmx512m -Xmn256m -Dserver.port=53050 -Denv=dev -Dapollo.cluster=DEFAULT"
    
      wanxinp2p-transaction-service:
        container_name: wanxinp2p-transaction-service
        build: wanxinp2p-transaction-service/
        image: wanxinp2p-transaction-service:1.0-SNAPSHOT
        network_mode: "host"
        ports:
          - "53060:53060"
        depends_on:
          - wanxinp2p-discover-server
        restart: always
        volumes:
          - "./logs:/logs"
        environment:
          SERVER_PORT: "53060"
          JAVA_OPTS: "-Xms512m -Xmx512m -Xmn256m -Dserver.port=53060 -Denv=dev -Dapollo.cluster=DEFAULT"
    
      wanxinp2p-depository-agent-service:
        container_name: wanxinp2p-depository-agent-service
        build: wanxinp2p-depository-agent-service/
        image: wanxinp2p-depository-agent-service:1.0-SNAPSHOT
        network_mode: "host"
        ports:
          - "53070:53070"
        depends_on:
          - wanxinp2p-discover-server
        restart: always
        volumes:
          - "./logs:/logs"
        environment:
          SERVER_PORT: "53070"
          JAVA_OPTS: "-Xms512m -Xmx512m -Xmn256m -Dserver.port=53070 -Denv=dev -Dapollo.cluster=DEFAULT"
    
      wanxinp2p-repayment-service:
        container_name: wanxinp2p-repayment-service
        build: wanxinp2p-repayment-service/
        image: wanxinp2p-repayment-service:1.0-SNAPSHOT
        network_mode: "host"
        ports:
          - "53080:53080"
        depends_on:
          - wanxinp2p-discover-server
        restart: always
        volumes:
          - "./logs:/logs"
        environment:
          SERVER_PORT: "53080"
          JAVA_OPTS: "-Xms512m -Xmx512m -Xmn256m -Dserver.port=53080 -Denv=dev -Dapollo.cluster=DEFAULT"
    
      wanxinp2p-reconciliation-service:
        container_name: wanxinp2p-reconciliation-service
        build: wanxinp2p-reconciliation-service/
        image: wanxinp2p-reconciliation-service:1.0-SNAPSHOT
        network_mode: "host"
        ports:
          - "53040:53040"
        depends_on:
          - wanxinp2p-discover-server
        restart: always
        volumes:
          - "./logs:/logs"
        environment:
          SERVER_PORT: "53040"
          JAVA_OPTS: "-Xms512m -Xmx512m -Xmn256m -Dserver.port=53040 -Denv=dev -Dapollo.cluster=DEFAULT"
    
  5. 构建镜像

    docker-compose up

  6. 启动wanxinp2p

    docker-compose up -d

3.13 部署前端

  1. 找到提供的前端工程(不要用之前的wanxinp2p_front),复制到web目录下

  2. 修改后端地址和文件服务地址:src/utils/request.js

const BaseUrl = 'http://127.0.0.1:53010/'
const FileServiceUrl = 'http://127.0.0.1:56082/farming/'
  1. 编写docker-compose.yml
version: '3'
services:
  wanxinp2p-web:
    container_name: wanxinp2p-web
    image: ebiven/vue-cli
    command:
    - /bin/sh
    - -c
    - |
      #npm install sass-loader -D
      #npm install node-sass --save-dev
      npm run dev:h5
    volumes:
      - ./my-project:/code
    network_mode: "host"
    restart: always
    ports:
      - "8081:8081"
  1. 启动前端

docker-compose up -d

4 测试

通过浏览器访问:http://localhost:8081/并进行登录

注意:有些服务该文档并未提供部署说明,需要由大家自行完成部署

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pswd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值