启动

xueyi2024/01/18

环境部署

JDK >= 17 (推荐17版本)
Mysql >= 8.0+
Redis >= 3.0
Maven >= 3.0
Node >= 18
nacos >= 2.0.0
sentinel >= 1.6.0

代码下载

提示

本项目前后端均在同一仓库内,前端为其中multi-ui

地址: XueYi-MultiSaasopen in new window

项目启动

后端运行

1、将XueYi-MultiSaas(后端)以Maven项目形式导入到idea
2、创建数据库xy-cloudxy-cloud1xy-configxy-seata共计四个库(必须
3、对各个库执行指定sql:(必须

  • quartz.sqlxueyi_1.sql两个sql导入至数据库xy-cloud
  • xueyi_2.sql导入至数据库xy-cloud1
  • xy-config.sql导入至数据库xy-config
  • xy-seata.sql导入至数据库xy-seata

提示

xueyi_3.sql的表结构与xueyi_2.sql一模一样,唯一区别是其无初始数据;
启动阶段无需使用,主要为后续增加新租户数据库时,初始化新租户数据库所用。

4、配置nacos持久化,修改conf/application.properties文件,增加支持mysql数据源配置,并设置为数据库xy-config内数据方式,并启动nacos必须

# db mysql
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/xy-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=password

提示

nacos版本需>=2.0.0,且需要自己下载(群内文件有),同时如何修改配置文件(conf文件下配置文件)切换至读取指定数据库请自行度娘;

5、修改主库和初始策略库信息:

  • 主库修改:启动nacos后,进入nacos控制台,进入配置管理 -> 配置列表 -> application-secret-dev.yml,修改主数据库连接信息(redis连接信息等也在此处修改)
  • 初始策略库修改:进入主库对应的数据库(默认为xy-cloud),找到te_source表,修改对应的数据源参数

提示

主库默认为xy-cloud库,初始策略库默认为xy-cloud1库,默认地址localhost:3306,默认账号为root,默认密码为password;
如与初始设置不一致,即按照第五点自行修改即可。

4、修改xueyi_1.sql中数据源表te_source中的数据源连接记录(修改成自己用的),其中,master库为主库,导入数据脚本xueyi_1.sqlslave库对应为默认从库,导入数据脚本xueyi_2.sql(当master库slave库可为同一个库)(必须
5、master库导入数据脚本quartz.sql可选
6、配置nacos持久化,修改conf/application.properties文件,增加支持mysql数据源配置

7、启动nacos,登录nacos管理页面
8、打开运行基础模块(启动没有先后顺序)

  • 必须 网关模块)XueYiGatewayApplication
  • 必须 认证模块)XueYiAuthApplication
  • 必须 系统模块)XueYiSystemApplication
  • 必须 租管模块)XueYiTenantApplication
  • 可选 监控中心)XueYiMonitorApplication
  • 可选 代码生成)XueYiGenApplication
  • 可选 定时任务)XueYiJobApplication
  • 可选 文件服务)XueYiFileApplication

9、集成seata分布式事务(可选配置,默认不启用)

  • 进入nacos控制台,进入配置管理 -> 配置列表 -> application-datasource-dev.yml,解除# seata: true # 开启seata代理,开启后默认每个数据源都代理,如果某个不需要代理可单独关闭的注释,同时将seata配置的enabled调整为true
  • 引入seata的配置文件至nacos(自行度娘)

前端运行

# 进入项目目录
cd multi-ui

# 安装依赖
pnpm install

# 启动项目
pnpm vite

# 浏览器访问
http://localhost:3000
  • 普通账户

    企业账号:xueYi
    员工账号:admin
    密码:admin123

  • 租管账户

    企业账号:administrator
    员工账号:admin
    密码:admin123

提示

前后端运行前,请注意相应的环境已安装好。

项目部署

后端部署

  • 打包工程文件

xueyi项目的bin目录下执行package.bat打包Web工程,生成war/jar包文件。
然后会在项目下生成target文件夹包含war或jar

提示

打包时建议通过idea | EclipseMaven进行打包,package.bat偶尔会出现莫名bug 不同模块版本会生成在xueyi/xueyi-xxxx模块下target文件夹

  • 部署工程文件

1、jar部署方式
使用命令行执行:java –jar xxxx.jar 或者执行脚本:bin/run.bat

2、war部署方式
xueyi/pom.xml中的packaging修改为war,放入tomcat服务器webapps

   <packaging>war</packaging>

提示

不同模块版本在xueyi/xueyi-xxxx模块下修改pom.xml

  • SpringBoot去除内嵌Tomcat(PS:此步骤不重要,因为不排除也能在容器中部署war
<!-- 排除内置tomcat -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
   <exclusions>
      <exclusion>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-tomcat</artifactId>
      </exclusion>
   </exclusions>
</dependency>

前端部署

当项目开发完毕,只需要运行一行命令就可以打包你的应用

# 打包生产环境
pnpm build

构建打包成功之后,会在对应模块的根目录生成 dist 文件夹,里面就是构建打包好的文件,通常是 ***.js***.cssindex.html 等静态文件。

通常情况下 dist 文件夹的静态文件发布到你的 nginx 或者静态服务器即可,其中的 index.html 是后台服务的入口页面。

Nginx配置

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;
        charset utf-8;

        location / {
           root   /home/xueyi/projects/xueyi-ui;
           try_files $uri $uri/ /index.html;
           index  index.html;

            # Enable CORS
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
            if ($request_method = 'OPTIONS') {
                add_header 'Access-Control-Max-Age' 1728000;
                add_header 'Content-Type' 'text/plain charset=UTF-8';
                add_header 'Content-Length' 0;
                return 204;
            }
        }

        location /dev-api/ {
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_pass http://xueyi-gateway:8080/;
           proxy_redirect default;
           add_header Access-Control-Allow-Origin *;
           add_header Access-Control-Allow-Headers X-Requested-With;
           add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
        }

        # 避免actuator暴露
        if ($request_uri ~ "/actuator") {
            return 403;
        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {
           root   html;
        }
    }
}

常见问题

  1. 如果使用Mac需要修改application.yml文件路径profile
  2. 如果使用Linux提示表不存在,设置大小写敏感配置在/etc/my.cnf添加lower_case_table_names=1,重启MYSQL服务
  3. 如果提示当前权限不足,无法写入文件请检查application.yml中的profile路径或logback.xml中的log.path路径是否有可读可写操作权限

如遇到无法解决的问题请到 Issuesopen in new window 反馈,会不定时进行解答。

Last Updated 2024/1/18 10:02:43