# GrayFaith管理系统-微服务后端 **Repository Path**: GrayFaith_admin/ManagementSystem-cloudBE ## Basic Information - **Project Name**: GrayFaith管理系统-微服务后端 - **Description**: GrayFaith开源管理系统-后端 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-11-08 - **Last Updated**: 2025-10-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目所需资源下载 所有资源都来自于互联网收集 ## graalvm-jdk-21(项目必须): https://download.oracle.com/graalvm/21/latest/graalvm-jdk-21_windows-x64_bin.zip ## gradle-8.10.2(打包必须): https://github.com/gradle/gradle-distributions/releases/download/v8.10.2/gradle-8.10.2-all.zip ## nacos-2.4.3下载地址(项目必须): https://github.com/alibaba/nacos/releases/download/2.4.3/nacos-server-2.4.3.zip ## MySQL8.0.40(项目必须,下列有傻瓜安装教程) https://cdn.mysql.com//Downloads/MySQLInstaller/mysql-installer-community-8.0.40.0.msi ## Sentinel控制台1.8.8(非必须,但是建议) https://github.com/alibaba/Sentinel/releases ## CentOS替代发行版(自备虚拟机,推荐VMWare17.5+) https://almalinux.org 使用9.6-DVD版本(Linux内核5.4.x) ## Docker Desktop(装好后不用启动,他只用来远程执行你的命令) https://www.docker.com/ 使用匹配你系统的版本 ## FinalShell(SSH工具) https://www.hostbuf.com 推荐使用的SSH工具,收费但是不贵 ## Redis(项目必须,下列有傻瓜安装教程) https://redis.io/downloads 官网下载 https://download.redis.io/redis-stable.tar.gz 直接下载最新的Redis包(需要自行编译,安装和配置,操作较为繁琐) ``` 从7.4版本开始,Redis采用RSALv2和SSPLv1双重许可协议 自建的Redis仅限内部使用,禁止对外提供商业用途 未获得商业授权的第三方供应商无法提供7.4及更高版本服务 ``` 简单来说就是没得到官方授权的人/公司/组织等, 不能搭建Redis7.4及更高版本的服务器,收费给他人使用 ## AnotherRedisDesktopManager(好用免费的Redis可视化工具) ``` 这玩意是用来方便用户操作redis的 项目下的package/目录下有个7z包 Another-Redis-Desktop-Manager-win-1.7.0-x64.7z 在Windows下解压 双击安装 装完就能用了 该工具是原生支持中文的,点设置可以自己换语言 ``` # 现阶段目标 -[X] 构建WebSocket服务 -[X] 为WebSocket添加SaToken的认证功能 -[X] 构建ServerSentEvent服务 -[X] 为ServerSentEvent添加SaToken的认证功能 # 安装和部署教程 ## 安装Docker Desktop 1. 准备工作 ``` 以Windows10和Window11为例 控制面板->程序和功能->启用或关闭Windows功能 ``` -[x] 适用于Linux的Windows子系统 ``` 将上述这一项都勾上,点击确定,等待安装完成 安装完成后重启电脑 ``` 2. 开始安装 ``` 默认情况下,Docker Desktop的安装包会自行安装到C盘, 但可通过命令行启动的方式来指定安装目录 在安装包所在目录使用CMD运行下列语句 最终他会将Docker Desktop安装到D:\Docker Desktop下,路径可以自行修改 "Docker Desktop Installer.exe" install --installation-dir="D:\Docker Desktop" ``` ## 创建虚拟机 1. 创建虚拟机,网络使用桥接模式(要点复制物理网络连接状态),安装ALMA-LINUX-9.6(选择带GUI的服务器) 2. 使用root账户进入虚拟机桌面 3. 设置主网卡(访问外网):单击右上角的菜单栏,选择设置,进入设置页面,找到IPv4设置 ``` IP请按照自身情况填写 DNS已经给出了国内的114主备和阿里云的主备,以及国外的谷歌DNS ``` ![IP设置步骤1.webp](%E5%9B%BE%E5%BA%8A/IP%E8%AE%BE%E7%BD%AE%E6%AD%A5%E9%AA%A41.webp) ![IP设置步骤2.webp](%E5%9B%BE%E5%BA%8A/IP%E8%AE%BE%E7%BD%AE%E6%AD%A5%E9%AA%A42.webp) ![IP设置步骤3.webp](%E5%9B%BE%E5%BA%8A/IP%E8%AE%BE%E7%BD%AE%E6%AD%A5%E9%AA%A43.webp) ![IP设置步骤4.webp](%E5%9B%BE%E5%BA%8A/IP%E8%AE%BE%E7%BD%AE%E6%AD%A5%E9%AA%A44.webp) ``` 验证一下,看看下列参数是否正确 ``` ![IP设置步骤5.webp](%E5%9B%BE%E5%BA%8A/IP%E8%AE%BE%E7%BD%AE%E6%AD%A5%E9%AA%A45.webp) 4. 设置辅网卡 ``` 虚拟机未启动状态下单击"编辑虚拟机设置" ``` ![添加辅网卡设置1.webp](%E5%9B%BE%E5%BA%8A/%E6%B7%BB%E5%8A%A0%E8%BE%85%E7%BD%91%E5%8D%A1%E8%AE%BE%E7%BD%AE1.webp) ![添加辅网卡设置2.webp](%E5%9B%BE%E5%BA%8A/%E6%B7%BB%E5%8A%A0%E8%BE%85%E7%BD%91%E5%8D%A1%E8%AE%BE%E7%BD%AE2.webp) ![添加辅网卡设置3.webp](%E5%9B%BE%E5%BA%8A/%E6%B7%BB%E5%8A%A0%E8%BE%85%E7%BD%91%E5%8D%A1%E8%AE%BE%E7%BD%AE3.webp) ![添加辅网卡设置4.webp](%E5%9B%BE%E5%BA%8A/%E6%B7%BB%E5%8A%A0%E8%BE%85%E7%BD%91%E5%8D%A1%E8%AE%BE%E7%BD%AE4.webp) ![添加辅网络截图5.webp](%E5%9B%BE%E5%BA%8A/%E6%B7%BB%E5%8A%A0%E8%BE%85%E7%BD%91%E7%BB%9C%E6%88%AA%E5%9B%BE5.webp) ![添加辅网络截图6.webp](%E5%9B%BE%E5%BA%8A/%E6%B7%BB%E5%8A%A0%E8%BE%85%E7%BD%91%E7%BB%9C%E6%88%AA%E5%9B%BE6.webp) ``` 启动并登录虚拟机, 然后他的设置方式就和主网卡(步骤3)一样了, 记得把刚刚记录下来的IP和网关掩码都设置到新网卡里,DNS填的和主网卡的一样 这边就不再详细介绍,去步骤3查看就行了 ``` ![添加辅网络截图7.webp](%E5%9B%BE%E5%BA%8A/%E6%B7%BB%E5%8A%A0%E8%BE%85%E7%BD%91%E7%BB%9C%E6%88%AA%E5%9B%BE7.webp) 5. 优化电源参数 ![电源优化步骤1.webp](%E5%9B%BE%E5%BA%8A/%E7%94%B5%E6%BA%90%E4%BC%98%E5%8C%96%E6%AD%A5%E9%AA%A41.webp) ![电源优化步骤2.webp](%E5%9B%BE%E5%BA%8A/%E7%94%B5%E6%BA%90%E4%BC%98%E5%8C%96%E6%AD%A5%E9%AA%A42.webp) 6. 优化内存overcommit参数 ``` 执行下列命令(一定要执行) printf "vm.overcommit_memory = 1\n" >> /etc/sysctl.conf sysctl vm.overcommit_memory=1 ``` ## 安装Docker ``` !!!默认使用root用户执行!!! sudo dnf update -y 等待系统更新完毕 更新完后重启 sudo dnf install -y dnf-plugins-core 等待安装完毕 添加仓库 sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo 或者用阿里云的仓库 sudo dnf config-manager --add-repo=http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo dnf install -y docker-ce docker-ce-cli containerd.io 等待docker安装完毕,如果提示什么链接被重置啥的,请添加更可靠的docker源,然后重复上一步, 启动docker sudo systemctl start docker 设置为开机自启动 sudo systemctl enable docker 查看docker版本号,如果看到版本号打印,那么就安装成功了 docker --version 输入该指令临时解除SELinux的限制 setenforce 0 vim /etc/selinux/config 拉到最下方按i进入编辑模式 将SELINUX=enforcing更改为以下内容(如果没有,请自行在最后一行添加) SELINUX=disabled 按Esc退出编辑模式 按:wq回车,保存并退出vim 这样就算重启后也会禁用SELinux 在/etc/docker/下新建一个daemon.json的文件,粘贴如下的镜像源进去 以下源不保证能用,如有问题请自行寻找镜像源(或者干脆挂梯子,总之就是一个折腾) { "registry-mirrors": [ "https://csobz162.mirror.aliyuncs.com", "https://mirror.ccs.tencentyun.com", "https://docker.mirrors.ustc.edu.cn", "https://registry.docker-cn.com", "http://hub-mirror.c.163.com", "https://docker.nju.edu.cn", "https://mirror.aliyuncs.com", "https://mirror.baidubce.com", "https://docker.m.daocloud.io", "https://cnb.cool/Anyexyz/cdm/docker-mirror", "https://docker.1panel.live", "https://dockerproxy.net" ] } 下列修改docker与外界通信的端口 vim /usr/lib/systemd/system/docker.service 找到ExecStart=xxxxxxxxxx那一行 按i进入编辑模式 在ExecStart=后面的启动命令后面追加(!第一个空格也要!) -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock 编辑完成后按Esc退出编辑模式 然后按:wq回车保存并退出vim 具体请查阅(https://blog.csdn.net/ss977/article/details/135839563) 开启宿主机防火墙 查看防火墙运行状态 sudo firewall-cmd --state 查看端口 sudo firewall-cmd --list-ports 永久开放8848和9848端口 sudo firewall-cmd --zone=public --add-port=2375/tcp --permanent 重载防火墙 sudo firewall-cmd --reload 重载 sudo systemctl daemon-reload 重启docker服务 sudo systemctl restart docker ``` ## 预安装镜像 ``` 因为后面需要使用到某些镜像的缓存, 所以这里预先安装几个镜像, 以此来提高后续的安装速度 docker pull ubuntu:24.04 docker pull mysql:8.0.40 docker pull rustfs/rustfs:latest ``` ## 在IDEA中连接和使用Docker ``` 在[安装Docker]中,已经配置了2375为外部访问端口并启用了防火墙 在IDEA配置中 配置Docker Desktop的可执行文件 使用TCP方式访问(tcp://你的虚拟机IP(NAT网卡):2375) 这里讲解一下为什么用NAT网卡, 因为NAT网卡本地传输文件更快,但是他没办法更简单的访问外网,(体现为在复杂环境下没办法访问宿主机的外网) 但是桥接的网卡外网传输更快,但是他没办法更简单的访问本地,(体现为本地上传大一些的文件时会只有几十KB一秒的速度) 所以上面创建虚拟的时候,会创建2张网卡来解决这个问题, 当我们开发的时候将使用辅网卡(NAT)来更快速的调试, 但是又能让虚拟机内的docker默认使用主网卡去外网下载镜像等操作 ``` ![远程执行Docker命令1.webp](%E5%9B%BE%E5%BA%8A/%E8%BF%9C%E7%A8%8B%E6%89%A7%E8%A1%8CDocker%E5%91%BD%E4%BB%A41.webp) ``` 配置完成后,就可以在IDEA中连接并使用Docker了 ``` ## 安装docker-compose ``` 这是用于容器编排的工具 可以一键部署容器 感觉卡的可以开梯子去下载 宇航员梯子(推荐一个梯子,便宜实用) https://today.abyss.moe 挂上梯子后打开下列地址 https://github.com/docker/compose/releases ``` ``` 在根目录下创建/application文件夹,并授予权限 cd / mkdir application chmod 766 /application 然后切换到新创建的目录 cd /application 将项目下的package/dockerCompose目录下的文件全部拷贝到/application/下 下面安装docker-compose unzip docker-compose.zip 然后将解压的文件移动到/usr/local/bin/下 mv docker-compose /usr/local/bin/ 然后输入下列命令修改执行权限 chmod 755 /usr/local/bin/docker-compose 创建软链接 ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose 输入docker-compose version命令查看是否安装成功 ``` ## 容器化MySQL ### 开发部署篇 ``` 请走完"安装docker-compose"这个步骤再来看容器化MySQL 请在虚拟机或测试机上顺序执行下列语句 开启宿主机防火墙 查看防火墙运行状态 sudo firewall-cmd --state 查看端口 sudo firewall-cmd --list-ports 永久开放3306端口 sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent 重载防火墙 sudo firewall-cmd --reload 返回自己的IDEA 点开IDEA坐下方的侧边栏-服务 展开Docker服务 然后右键mysql,选择启动,等待他部署完 ![IDEADocker部署步骤1.webp](%E5%9B%BE%E5%BA%8A/IDEADocker%E9%83%A8%E7%BD%B2%E6%AD%A5%E9%AA%A41.webp) ![IDEADocker部署步骤2.webp](%E5%9B%BE%E5%BA%8A/IDEADocker%E9%83%A8%E7%BD%B2%E6%AD%A5%E9%AA%A42.webp) 如果没有问题,MySQL就安装好了 使用工具链接数据库(建议用IDEA自带的,因为可以配合EasyQuery的数据库助手一起使用) root/123456 数据已经给你导完了,开用吧 ``` ### 生产部署篇 ``` 请走完"安装docker-compose"这个步骤再来看容器化MySQL 新建/application/mysql/目录 mkdir -p /application/mysql 修改目录权限 chmod -R 766 /application/mysql/ 容器化部署的MySQL数据目录和日志目录是在宿主机上的,使用容器挂载路径,方便数据库的持久化 开启宿主机防火墙 查看防火墙运行状态 sudo firewall-cmd --state 查看端口 sudo firewall-cmd --list-ports 永久开放3306端口 sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent 重载防火墙 sudo firewall-cmd --reload 在宿主机上使用下列命令一键构建镜像并启动 docker-compose up -d mysql 如果没有问题,MySQL就安装好了 使用工具链接数据库(建议用IDEA自带的,因为可以配合EasyQuery的数据库助手一起使用) root/123456 数据已经给你导完了,开用吧 ``` ## 容器化Nacos ``` 请走完"安装docker-compose"这个步骤再来看容器化Nacos 新建/application/nacos/目录 mkdir -p /application/nacos 修改目录权限 chmod -R 766 /application/nacos/ 容器化部署Nacos的配置文件和日志目录是在宿主机上的,使用容器挂载路径,方便持久化 把项目根目录package/dockerCompose/nacos/package/logs下的.keep删除(因为Git不允许提交空文件夹...) 把项目根目录package/dockerCompose/nacos/package/target下的.keep删除(因为Git不允许提交空文件夹...) 请注意package/dockerCompose/nacos/package/bin/下的所有脚本文件都必须以LF(\n)作为换行符,不然会报错无法执行 然后把项目根目录package/nacos/下的所有东西都原模原样的拷贝到宿主机的/application/nacos/中 然后找到项目根目录下的A-service-nacos子项目 里面有nacos-server.7z.001,nacos-server.7z.002,nacos-server.7z.003压缩包 将任意一个在你自己机器上解压,并放到你项目根目录下的package/dockerCompose/nacos/package/target/下 (其实是因为单文件体积太大Gitee传不了,所以才分包压缩......) 然后到服务器上查看 /application/nacos/中有个nacos1的文件夹, 这文件夹里面是日志目录(logs)和application.properties配置 !!如果你是同一宿主机上部署,请将application.properties其中的server.port=更改为不同的端口!! !!如果你是不同宿主机之间部署,请将server.port=都更改为8848,使用相同的网络端口!! !!!!!!!!(在同一宿主机上部署的集群,Nacos2以后的端口可以根据server.port=自动偏移)!!!!!!!! !!!!!!!!(开启了host的网络模式会直接使用宿主机的网络栈,千万记得端口配置)!!!!!!!! !!!!!!!!(但是我想应该没有哪个疯子会把Nacos集群都部署到一台机器上吧?)!!!!!!!! 不同的节点配置方式基本相同 将集群内所有子节点的IP写入/application/nacos/cluster.conf中 示例: # 2025-4-11 17:04:39 10.0.31.100:8848 10.0.31.101:8848 到这里配置就完成了 开启宿主机防火墙 查看防火墙运行状态 sudo firewall-cmd --state 查看端口 sudo firewall-cmd --list-ports 永久开放8848和9848端口 sudo firewall-cmd --zone=public --add-port=7848/tcp --permanent sudo firewall-cmd --zone=public --add-port=8848/tcp --permanent sudo firewall-cmd --zone=public --add-port=9848/tcp --permanent 重载防火墙 sudo firewall-cmd --reload 在宿主机上使用下列命令一键构建镜像并启动 docker-compose up -d nacos1 如果没有问题,Nacos就部署好了 打开浏览器,检查下服务和集群是否可以 IP:8848/nacos 登录(初始nacos/nacos,账号密码自行修改) 如果能新建配置,注册服务,并能够将获取到配置,那么服务就是正常的 点击左侧菜单的集群管理->节点列表,如果能看到节点状态为绿标的UP,那么集群是正常启用的 ``` ## 容器化Redis ``` 请走完"安装docker-compose"这个步骤再来看容器化Redis 根目录下已经给你准备好了一个7.4.1的redis傻瓜包(编译好且配置好的) 项目下的package/redis/redis.zip 新建一个/application/redis目录 mkdir -p /application/redis cd /application/redis 上传redis.zip文件到/application/redis/ 解压缩redis.zip文件 unzip redis.zip chmod -R 766 /application/redis/ 好了,装完了,Redis是安装在宿主机上的,但是使用容器挂载路径,让容器去启动它 /application/redis/下的目录结构看起来是这样的 redis |__bin |____redis-benchmark |____redis-check-aof |____redis-check-rdb |____redis-cli |____redis-sentinel |____redis-server |__logs |__data |__redis.conf |__sentinel.conf |__startup.sh |__users.acl !!!! 必看!下面是配置修改!必看 !!!! ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 用户/密码修改 redis.conf文件中requirepass是单机密码(已经不用) 现在已经使用acl控制了,请直接查看[关于acl文件](已配置好,别瞎改) 关于acl文件 具体权限请互联网查询 作者提供的傻瓜包已经加入了root用户的所有权限配置,具体密码打开users.acl寻找 在宿主机上使用下列命令一键构建镜像并启动 docker-compose up -d redis 开启宿主机防火墙 查看防火墙运行状态 sudo firewall-cmd --state 查看端口 sudo firewall-cmd --list-ports 永久开放6379端口 sudo firewall-cmd --zone=public --add-port=6379/tcp --permanent 重新载入配置 sudo firewall-cmd --reload 到这一步都没问题,那么你的redis服务就配置完毕了 ``` ## 容器化Nginx ``` 请走完"安装docker-compose"这个步骤再来看容器化Nginx 根目录下已经给你准备好了一个Nginx配置 项目下的package/nginx 将其放到你的AlmaLinux下的/application/nginx/下 没有的话自己新建一个/application/nginx目录 cd /application/nginx chmod -R 766 /application/nginx/ 好了,装完了,nginx是安装在容器中的,但是使用宿主机的配置和日志路径挂载,然后用容器去启动它 /application/nginx/下的目录结构看起来是这样的 !!!! 必看!下面是配置修改!必看 !!!! ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 在宿主机上使用下列命令一键构建镜像并启动 docker-compose up -d nginx 开启宿主机防火墙 查看防火墙运行状态 sudo firewall-cmd --state 查看端口 sudo firewall-cmd --list-ports 永久开放80端口 sudo firewall-cmd --zone=public --add-port=80/tcp --permanent 如果使用https的话也开放下443端口 sudo firewall-cmd --zone=public --add-port=443/tcp --permanent 重新载入配置 sudo firewall-cmd --reload 到这一步都没问题,那么你的nginx服务就配置完毕了 ``` ## 容器化Gateway ``` 请走完"安装docker-compose"这个步骤再来看容器化Gateway Gateway服务请使用gradle的bootJar指令打包, 然后从C-service-gateway/build/libs/将Jar复制到package/gateway/下 将包名修改成service-gateway.jar 将其放到你的AlmaLinux下的/application/gateway/下 没有的话自己新建一个/application/gateway cd /application/gateway chmod -R 766 /application/gateway/ 在宿主机上使用下列命令一键构建镜像并启动 docker-compose up -d gateway 开启宿主机防火墙 查看防火墙运行状态 sudo firewall-cmd --state 查看端口 sudo firewall-cmd --list-ports 永久开放9003端口 sudo firewall-cmd --zone=public --add-port=9003/tcp --permanent 重新载入配置 sudo firewall-cmd --reload 到这一步都没问题,那么你的gateway服务就配置完毕了 ``` ## 容器化RustFS ``` 请走完"安装docker-compose"这个步骤再来看容器化RustFS 在宿主机上使用下列命令一键构建镜像并启动 docker-compose up -d rustfs 开启宿主机防火墙 查看防火墙运行状态 sudo firewall-cmd --state 查看端口 sudo firewall-cmd --list-ports 永久开放8998,8999端口 sudo firewall-cmd --zone=public --add-port=8998/tcp --permanent sudo firewall-cmd --zone=public --add-port=8999/tcp --permanent 重新载入配置 sudo firewall-cmd --reload 到这一步都没问题,那么你的RustFS服务就配置完毕了 ```