一、概述

背景

本次将记录根据以下服务架构图部署项目到此前搭建好的学习环境

项目部署1

将部署一个基于若依二次开发的工具系统,在server01中部署前端静态资源,并配置nginx负载均衡到server01、server02的springboot应用上,server01、server02中的springboot应用将使用docker部署

二、前端部署和nginx配置

准备前端静态资源包

# 构建
npm run build:prod

将构建出来的静态文件压缩起来

项目部署2

把压缩包传输到server00的/home/tools/xiaoman-tools目录下并解压

# 解压压缩包
unzip xiaoman-tools-ui.zip

# 没有unzip的话需要安装
yum install unzip

配置nginx

cd /usr/local/nginx/conf/
vi nginx.conf

# 添加如下配置
# tools
upstream tools{
    server 10.168.1.11:8080 weight=5;
    server 10.168.1.12:8080 weight=5;
}   

server {
    listen       80;
    server_name  tools.xiaoman.online;

    location / {
    root   /home/tools/xiaoman-tools-ui/;
      index  index.html index.htm;
    }

location /prod-api/{
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://tools/;
}


# 重启nginx
/usr/local/nginx/sbin/nginx -s reload

配置frp

# 服务端配置
vi /usr/local/frp/frps.ini
# 添加如下配置
[nginx]
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port = 8080
# 配置nginx,需要把80端口转到8080
server {
    listen       80;
    server_name  tools.xiaoman.online;

    location / {
        root   html;
        index  index.html index.htm;
        proxy_pass  http://tools.xiaoman.online:8080;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}
# 重启frps 重启nginx
systemctl restart frps.service
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

# 客户端配置
vi /usr/local/frp/frpc.ini
[nginx]
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port = 8080

# 重启frpc
systemctl restart frpc.service

三、后端部署

进入应用服务器(server_01,server_02)创建相关目录

mkdir /home/tools
mkdir /home/tools/app
mkdir /home/tools/data
mkdir /home/tools/logs

准备好部署的jar包和Dockerfile
项目部署3
dockerfile内容

# 基础镜像
FROM openjdk:8

# 设置工作目录
WORKDIR /app

# 将 Maven 相应的目录挂载到容器
VOLUME /opt/maven/apache-maven-3.6.3/:/opt/maven/apache-maven-3.6.3

# 挂载日志目录到容器
VOLUME /home/tools/logs:/home/tools/logs

# 拷贝应用jar包到工作目录
COPY ./xiaoman-tools.jar /app

# 暴露应用端口
EXPOSE 8080

# 指定容器启动命令,运行应用jar包,并且可以指定配置文件application-prod.yml启动
CMD ["java", "-jar", "xiaoman-tools.jar"]

把jar包和Dockerfile传到/home/tools/app下

# 构建镜像
docker build -t xiaoman-tools:latest .
# 启动容器 需要挂载日志到宿主机,且业务需求需要用到maven
docker run -d \
-e "SPRING_PROFILES_ACTIVE=prod"\
-p 8080:8080 \
-v /opt/maven/apache-maven-3.6.3/:/opt/maven/apache-maven-3.6.3/ \
-v /home/tools/logs:/home/tools/logs \
xiaoman-tools:latest

两台服务器(server01,server02)操作一致,部署成功~

项目部署3

五、最后

vue+springboot集群的部署并不难,但依然存在以下问题:

1.由于集群的关系,对于上传文件的需求,两个应用会把上传的文件上传到各自的服务器,会存在“找不到文件”的情况。 解决方案:统一把文件上传到nas服务器,对文件的读写均操作nas服务器。

2.两个应用的日志文件分别保存在两个服务器,排查问题时相对麻烦。 解决方案:部署日志采集工具,把不同服务器的日志收集起来进行分析。

本次记录到这里,下一次记录将具体解决以上存在的问题。

Logo

快速构建 Web 应用程序

更多推荐