Blage's Coding Blage's Coding
Home
算法
  • 手写Spring
  • SSM
  • SpringBoot
  • JavaWeb
  • JAVA基础
  • 容器
  • Netty

    • IO模型
    • Netty初级
    • Netty原理
  • JVM
  • JUC
  • Redis基础
  • 源码分析
  • 实战应用
  • 单机缓存
  • MySQL

    • 基础部分
    • 实战与处理方案
    • 面试
  • ORM框架

    • Mybatis
    • Mybatis_Plus
  • SpringCloudAlibaba
  • MQ消息队列
  • Nginx
  • Elasticsearch
  • Gateway
  • Xxl-job
  • Feign
  • Eureka
  • 面试
  • 工具
  • 项目
  • 关于
🌏本站
🧸GitHub (opens new window)
Home
算法
  • 手写Spring
  • SSM
  • SpringBoot
  • JavaWeb
  • JAVA基础
  • 容器
  • Netty

    • IO模型
    • Netty初级
    • Netty原理
  • JVM
  • JUC
  • Redis基础
  • 源码分析
  • 实战应用
  • 单机缓存
  • MySQL

    • 基础部分
    • 实战与处理方案
    • 面试
  • ORM框架

    • Mybatis
    • Mybatis_Plus
  • SpringCloudAlibaba
  • MQ消息队列
  • Nginx
  • Elasticsearch
  • Gateway
  • Xxl-job
  • Feign
  • Eureka
  • 面试
  • 工具
  • 项目
  • 关于
🌏本站
🧸GitHub (opens new window)
  • 网关

    • Api-gateway-core
    • Api-gateway-center
    • Api-gateway-assist
    • Api-gateway-sdk
    • 部署配置
      • 1.Api-gateway-admin前后端分离
        • 后台vue3项目文件夹说明
        • Mybatis<where>标签
        • 跨域与分页
      • 2.Nginx配置问题
      • 3.Docker部署配置
        • ☀️api-gateway-engine
        • ☀️api-gateway-center
        • ☀️单机Zookeeper
        • ☀️Nginx配置
  • 抽奖

  • 电商

  • 外卖

  • 项目笔记
  • 网关
phan
2023-05-15
目录

部署配置

# 部署配置

# 1.Api-gateway-admin前后端分离

# 后台vue3项目文件夹说明

  • views:存放vue页面
  • router:通过ts文件配置组件与路由绑定关系
  • components:组件层(整个页面宏观整体角度),包括标题头,左侧菜单,标签显示,脚部
  • api:统一维护一个index.ts,vue页面中的调用API接口统一管理,包括请求API接口
  • public:存放模板与数据,比如api查询伪造的mock json数据

# Mybatis<where>标签

Mybatis的<where>标签结合<if>标签使用(替代1=1,优化过滤需要MySQL做,减轻压力):①子句开头为and或者or时,where标签会自动把它剔除。②至少一个if标签有内容才会插入where子句。

好处:sql语句复用,涵盖指定条件查询和全表查询(查所有)两种查询情况,repository层不需要做null判断。

<where>
    <if test="data != null and data.systemId != ''">
        and system_id = #{data.systemId}
    </if>
    <if test="data != null and data.interfaceId != ''">
        and interface_id = #{data.interfaceId}
    </if>
</where>
1
2
3
4
5
6
7
8

# 跨域与分页

跨域:直接在controller类上注解**@CrossOrigin**

分页:封装OperationRequest和OperationResult类型,接收前端的分页请求。同时后端增加行计数方法,总记录数返回给前端。

# 2.Nginx配置问题

  • 数据库远程连接权限

问题:SpringBoot配置文件application.yml中连接数据库配置文件的路径改为本机的ip之后启动项目报错,连接不上数据库。

解决:登录连接MySQL后,输入以下两条命令,允许远程连接权限,并重启MySQL服务。

grant all privileges on *.* to 'root'@'%' identified by '1234' with grant option;
flush privileges;
1
2
  • Nginx更改配置生效

问题:Nginx在Docker环境部署时,手动修改nginx.conf后,容器没有自动更新配置。

解决:需要docker restart重启使配置生效。或者exec进入容器内部reload重新加载配置。

  • Nginx.conf异常退出

问题:Nginx.conf异常退出,导致出现两份配置文件产生备份的现象,下次再进行修改的时会提示错误。

解决:在conf文件内ls -a查看所有文件(交换文件是隐藏文件),并rm删除交换文件。

  • Nginx配置上游服务器

问题:在Nginx.conf中配置upstream代理服务器没有生效,访问Nginx后没有正确代理到上游服务器返回404

解决:upstream每个server都需要以分号;结尾,因此center从数据库查询到网关地址后UpstreamVO的每个代理服务器server都需要在后面加上";"

  • Linux和windos换行符

问题:Linux系统下的换行符直接\n,不需要再添加\r,否则在Linux内打开文件会出现^M乱码。

# 3.Docker部署配置

# ☀️api-gateway-engine

①Dockerfile文件配置EVN PARAMS指定springBoot运行环境(yml配置文件),JAVA_OPTS用于指定java运行环境,比如-Dport。EVN相当于在ENTRYPOINT的指令拼接外部所指定的运行环境,具体如下:

# 基础镜像
FROM openjdk:8-jdk-alpine
# 作者
MAINTAINER  "panhai"
# 时区
ENV TZ=PRC
ENV PARAMS=""
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 添加应用
ADD api-gateway-engine.jar /api-gateway-engine.jar
# 执行镜像
ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /api-gateway-engine.jar $PARAMS"]
1
2
3
4
5
6
7
8
9
10
11
12

②根据Dockerfile文件构建镜像:

 docker build -f ./Dockerfile -t api-gateway-engine:1.0.0 .
1

③运行容器,通过-e指定Dockerfile配置的外部运行环境参数,最终拼接到Dockerfile的指令当中:

docker run -p 8003:8003 -p 7398:7398 \
    -e PARAMS="
    --sever.port=8003
    --api-gateway.address=http://192.168.200.200:8080
    --api-gateway.groupId=10001
    --api-gateway.gatewayId=api-gateway-g4
    --api-gateway.gatewayName=电商配送网关
    --api-gateway.gatewayAddress=192.168.200.200:7398" \
    --name api-gateway-engine2 -d api-gateway-engine:1.0.0
1
2
3
4
5
6
7
8
9

# ☀️api-gateway-center

①Dockerfile文件:

# 基础镜像
FROM openjdk:8-jdk-alpine
# 作者
MAINTAINER  "panhai"
# 时区
ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 添加应用
ADD api-gateway-center.jar /api-gateway-center.jar
# 执行镜像
ENTRYPOINT ["java","-jar","/api-gateway-center.jar"]
1
2
3
4
5
6
7
8
9
10
11

②根据Dockerfile文件构建镜像:

 docker build -f ./Dockerfile -t api-gateway-center:1.0.5 .
1

③运行容器,并将容器内部SpringBoot程序的文件,挂载到Linux服务器外部的Nginx配置文件,同时添加监听器,具体如下:

docker run -p 8080:8080 -v /usr/local/nginx/conf:/nginx/conf -v /var/run/docker.sock:/var/run/docker.sock --name api-gateway-center -d api-gateway-center:1.0.5 CP4-LISTEN:8080,fork,reuseaddr UNIX-CONNECT:/var/run/docker.sock TCP4-LISTEN:8080,fork,reuseaddr UNIX-CONNECT:/var/run/docker.sock
1

# ☀️单机Zookeeper

①拉取zookeeper镜像:

docker pull docker.io/zookeeper:3.4.13
1

②在单机主机上建立挂载目录和zookeeper配置文件:

mkdir -p /usr/local/zookeeper/conf
mkdir -p /usr/local/zookeeper/data
cd /usr/local/zookeeper/conf
touch zoo.cfg
vi zoo.cfg
1
2
3
4
5

③zoo.cfg配置信息:

clientPort=2181
dataDir=/data
dataLogDir=/data/log
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
1
2
3
4
5
6
7
8
9

④单机启动zk容器,容器内的zkServer.sh默认会读取/conf/zoo.cfg下的配置,读取将数据目录和配置目录挂载到容器内的对应文件,并使用host网络模式--network host(用默认的bridge模式,会导致容器跨主机间通信失败),此时只能通过宿主机Linux的IP(192.168.200.200:2181)访问zk

docker run --privileged=true --network host -v /usr/local/zookeeper/data:/data -v /usr/local/zookeeper/conf:/conf --name zookeeper2181 -d docker.io/zookeeper:3.4.13
1

# ☀️Nginx配置

①拉取最新Nginx镜像:

docker pull nginx	
1

②创建外部挂载的文件目录

mkdir -p /usr/local/nginx/conf
mkdir -p /usr/local/nginx/log
mkdir -p /usr/local/nginx/html
1
2
3

③先第一遍运行nginx容器,将容器的nginx.conf文件和conf.d文件夹复制到宿主机

docker run --name nginx -p 9001:80 -d nginx
docker cp nginx:/etc/nginx/nginx.conf /usr/local/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /usr/local/nginx/conf/conf.d
docker cp nginx:/usr/share/nginx/html /usr/local/nginx/
1
2
3
4

④删除容器

docker stop nginx
docker rm nginx
1
2

⑤真正运行Nginx容器,并挂载对应文件与文件夹

docker run \
-p 8090:80 \
--name nginx \
-v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /usr/local/nginx/log:/var/log/nginx \
-v /usr/local/nginx/html:/usr/share/nginx/html \
-d nginx:latest
1
2
3
4
5
6
7
8

⑥修改html内容或者conf配置文件后,需要重启容器才能生效

docker restart nginx
1
编辑 (opens new window)
#网关
上次更新: 2023/12/15, 15:49:57
Api-gateway-sdk
抽奖项目

← Api-gateway-sdk 抽奖项目→

Theme by Vdoing | Copyright © 2023-2024 blageCoder
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式