智能 BI 项目后端运行&部署

环境准备

本地启动

  • MySQL教程
  • Redis 下载下来直接默认下一步就行
  • RabbitMQ 安装运行教程
  • 配置 IDEA Maven 配置 教程

安装 Redis

image-20240927142356752 image-20240927142420727 image-20240927142458789

如果想要修改端口号可以把上面的 6379 修改成对应的端口号

image-20240927142517509 image-20240927142554824 image-20240927142615083 image-20240927142632154

验证 Redis 是否安装成功

win +R 输入 services.msc

image-20240927145432858 image-20240927143108862

1、安装 Erlang + RabbitMQ 先安装 Erlang

image-20240927005741030

选择 是

image-20240927005735279 image-20240927005819602 image-20240927005835856 image-20240927005847403 image-20240927005941421

2、安装 RabbitMQ 直接双击 exe 程序即可安装

image-20240927010036491 image-20240927010100135 image-20240927010111401 image-20240927010146493 image-20240927010330897 image-20240927010355970 image-20240927010409998

3、启动 RabbitMQ

1)搜索 cmd -> 以管理员身份运行

image-20240927013101415

2)进入 MQ 安装路径:C:\Program Files\RabbitMQ Server\rabbitmq_server-3.12.13\sbin

text
复制代码
cd "C:\Program Files\RabbitMQ Server\rabbitmq_server-3.12.13\sbin"

3)输入 rabbitmq-plugins.bat enable rabbitmq_management

text
复制代码
rabbitmq-plugins.bat enable rabbitmq_management
image-20240927014128347

4)依次输入下面的命令

text
复制代码
rabbitmq-service.bat stop rabbitmq-service.bat install rabbitmq-service.bat start
image-20240927014336375 image-20240927014510092 image-20240927014536826

5)然后可以直接在浏览器上 http://localhost:15672/mgmt

账号:guest

密码:guest

image-20240927014655951

6)重启后这么启动呢?一般默认重启之后自启动

win + R 输入 services.msc

找到 RabbitMQ 右键 Start

image-20240927183034440

启动成功

image-20240927183109001

安装依赖

正常项目启动右下角会有下面的提示,可以直接确认 Automatically

image-20240920220528840

点击之后,会弹出一个框点同意就好了

image-20240920225429979

如果发现自己 idea 右侧没有 Maven 插件,那么应该就是打开的路径有些小问题,确保自己打开的是路径下包含下面的内容

image-20240927131824965

确保自己 IDEA Maven 的配置,点击侧边栏的 Maven 进行安装 Maven 依赖

  • Maven 选着自己安装的不是 IDEA 内置的
  • config 文件选着已经配置镜像的 setting.xml
  • Use setting from .mvc/maven.conf 这个是非选择状态
image-20240927133332996 image-20240920211634275 image-20240920211804624

这样操作之后可以看到,正在下载依赖

下载的速度慢的话,看上面 Maven 环境准备安装教程里面有如何配置国内镜像

image-20240927131904171

下载依赖完成之后:

image-20240920225545152

下载中途断网,可能会出现下面的情况

image-20240927133141396 image-20240927133444194

直接点击 Try to run Maven import with -U flag (force update snapshots)

恢复下载!

image-20240927133608680

MySQL

  • 已经安装 MySQL
  • 有 SQL 文件(根目录下 sql)
image-20240827214247374

先下载 IDEA 连接 MySql 所需要的依赖

image-20240827214523819 image-20240827214916326

链接成功,链接成功之后就可以执行下面操作

image-20240927140403815

先执行创建库表 SQL, Ctrl + A 右键 Execute

image-20240927140556671 image-20240927141024590

执行成功之后,可以 SQL 语句左侧会有 √

image-20240927141143260 image-20240927141223861

如果没有看到 yubi 数据库,点击 localhost 后面的框,在下拉框找到 yubi 点击前面方框就可以看到 yubi 数据库了

image-20240927141334337

配置文件

image-20240920232741118
  • 如果 Redis 直接一路默认,那么 application.yml 关于 Redis 的配置就不用修改
  • application.yml 默认是本地运行时生效的配置
  • application-prod.yml 当在服务器指定 --spring.profiles.active=prod 才会生效,一般写线上配置,比如:线上 MySQL、Redis ...
  • application-test.yml 当在服务器指定 --spring.profiles.active=test 才会生效

1、注意格式:

  • 冒号是英文的
  • 具体的值和冒号之间有一个空格,字符串不需要加 “”
yml
复制代码
spring: application: name: yubi-backend

2、想要修改项目运行的端口?

yml
复制代码
server: port: 8101 # 修改端口

前端请求后端的 baseUrl 就是 http://localhost:端口/api 具体可以后端提供的接口文档在后面的 启动项目 有接口文档部分

3、修改自己 MySQL、Redis 配置

MySQL

yml
复制代码
spring: # 数据库配置 datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/yubi # yudada 是数据库的名称 如果是远程 MySQL 例如: jdbc:mysql://192.129.11.11:3306/yudada username: root # 用户名 password: 123456 # MySQL 设置的密码

Redis

yml
复制代码
spring: redis: database: 1 host: localhost # 如果线上改成线上 IP port: 6379 # Redis 具体运行端口,默认安装 6379 timeout: 5000 # password: 123456 # 密码,默认安装没有密码,如果服务器 Redis 有密码就修改这个

注意:

还需要修改一个地方 Redis 才能真正的启动

image-20240927135850323

修改后的效果

image-20240927135914314

如果服务器 Redis 有密码还需要修改 Redisson 配置

java
复制代码
@Configuration @ConfigurationProperties(prefix = "spring.redis") @Data public class RedissonConfig { private Integer database; private String host; private String password; private String port; @Bean public RedissonClient redissonClient() { Config config = new Config(); config.useReplicatedServers() .setDatabase(database) .setPassword("".equals(password) ? null : password) // 这样没有密码就用默认值 null 有密码就用密码更加灵活 .addNodeAddress(String.format("redis://%s:%s", host, port)); return Redisson.create(config); } }

4、RabbitMQ 配置

yml
复制代码
spring: rabbitmq: host: localhost port: 5672 password: guest username: guest

等到部署到服务器上的时候

  • host 服务器 IP 或者 域名
  • port 端口默认 5672
  • password 密码
  • username 账号

这里如果是后面自己在服务器上的 RabbitMQ 创建的新的用户,本地有很大概率连接不上

具体原因是因为没开启允许远程访问的权限 解决办法

具体 BUG 效果是这样的:

image-20240927190618800

5、使用 星火AI 进行 AI 生成

配置教程

初始化 RabbitMQ

image-20241019164149537 image-20241019164143410 image-20241019165025347

执行完这两个 初始化的 Main 方法之后,打开本地 web 管理页面

image-20241019165053691 image-20241019165112166

启动项目

image-20240927141956973 image-20240927142025347

直接点击 Enable annotation processing

image-20241019165255285

访问接口文档:

http://localhost:8101/api/doc.html

image-20240921215204817

部署

安装必备环境

放行服务器端口

服务器

image-20241019165518596

宝塔(如果有的话)

image-20241019165455919

下面几个端口是需要放行的

  • 3306 MySQL
  • 6379 Redis
  • 15672 RabbitMQ web 面板
  • 5672 RabbitMQ
  • 22 端口 SSH
  • 443 HTTPS
  • 80 HTTP

服务器安装 RabbitMQ

安装 DNF

1、

text
复制代码
yum install epel-release
image-20241009203545454

2、

text
复制代码
yum install dnf
image-20241009203632789

安装成功

image-20241009203651254

安装 RabbitMQ

1、指定仓库

text
复制代码
sudo dnf install -y https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm

2、安装 rabbitmq 默认会安装 erlang

text
复制代码
sudo dnf install -y rabbitmq-server-3.3.5-34.el7
image-20241009211123061

3、开启 web 管理页面

text
复制代码
sudo rabbitmq-plugins enable rabbitmq_management

4、启动 RabbitMQ

text
复制代码
sudo systemctl start rabbitmq-server

5、查看运行状态

text
复制代码
systemctl status rabbitmq-server
image-20241009212252468

6、设置开机自启动

text
复制代码
sudo systemctl enable rabbitmq-server

登录 web 管理界面

http://服务器IP:15672

image-20241009214139890

默认账号、密码都是 guest

要是报错就自己再仔细看看是不是输入错误了

创建用户&禁用默认用户远程访问

  • 创建用户
  • 允许远程连接
image-20241009200510767 image-20241009200822956 image-20241009200851259

执行好之后添加好的用户 Can access virtual hosts 那一栏就不会是黄颜色的了


重要

关闭允许 guest 用户远程访问,为了安全

image-20241009201040420 image-20241009201140735

Docker 安装 RabbitMQ

Docker 安装就相对简单很多了!

1、下载 rabbitmq

text
复制代码
docker pull rabbitmq:3.12.13-management

2、运行 rabbitmq

text
复制代码
docker run -d --name=rabbitmq -p 15672:15672 -p 5672:5672 rabbitmq:3.12.13-management
image-20241009213651818

3、登录 web 管理界面

地址: http://服务器IP:15672

账号、密码默认 guest

image-20241009214146062

4、看上面关于 创建用户&禁用默认用户远程访问 章节

初始化 RabbitMQ

image-20241019170307233 image-20241019170419540

执行完这两个 Main 方法,查看 web 管理页面,就可以发现多了

image-20241019170914842 image-20241019165112166

制作 + 上传 JAR 包

image-20240920234801067

Lifecycle -> package 双击

之后我们就可以在 target 目录下面找到打包好的 jar 包

如果报错的话:

  1. 删除 target 目录(IDEA 右键删除即可),重新打包尝试
  2. Maven -> Lifecyle -> clean
  3. 退出 IDEA 在文件管理器找到该项目的 .idea 文件右键删除 ,然后重新打开 IDEA 重新走一遍流程
image-20240928104016670 image-20240928104101415 image-20241019171110800

部署

后面可以参考这篇文章 『 后端部署(通用) 』

相关专栏

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
leikooo
作者分享
ARTS 0815: 分隔链表、大删除是加活不是减负与协议栈如何一层层拆信封
4
DeepSeek Harness 缓存命中率太惊人了,有时候竟然能到 99%,看鱼皮哥的视频竟然还出现过 100% 😱 https://www.bilibili.com/video/BV1VkgK6NEZS
7
ARTS 0809: 反转链表、Shopify 如何用 MySQL 解决超卖与 AI 时代程序员的价值
5
译文:《SwiftUI 七年:平庸的故事》 SwiftUI 在 2019 年高调发布,本应成为苹果全平台成熟、可量产的 UI 未来。七年过去,到了 2026 年,它仍像一场永不结束的 beta:布局难预期、性能不稳、数据流混乱,还几乎没有可靠的向后兼容,开发者被迫写一堆 shim 和 workaround。 作者用苹果官方教程(甚至是有问题的)以及与 UIKit 的对比说明:SwiftUI 用“看起来方便”换掉了精确的工程控制。更深一层,他认为这反映了苹果从 Cocoa、Aqua、Auto Layout 那种不妥协的工艺,转向“够用就行”的企业文化。 SwiftUI 为何存在 苹果并非单纯想提供更好工具,而是不得不应对竞争:React、React Native、Flutter 让“一套代码多端跑”变得诱人;Mac 上原生应用又日渐被网页和 Electron 吃掉。SwiftUI 要同时拴住原生生态、并降低移植到 Mac 的成本。卖点是:响应式数据流、声明式布局、跨平台复用。 数据流 “单一数据源”听起来很美,实际却是 @State、@Binding、ObservedObject,再到 Observation / @Observable 的不断换代。你很难确定视图会更新几次、为何更新;它该忽略的变化会反应,该关心的变化又可能忽略 - - 像个黑盒。 布局系统 基于尺寸协商的布局在 Keynote 里很合理,做浮动视图、自定义侧边栏时却极度不稳定。官方教程里一个很普通的侧边栏,多年仍有问题。布局脆弱到最后往往只能上 GeometryReader - - 一旦用了,声明式优势就没了,还要手算坐标,而且下一版布局规则一变,数学还得重写。 API 稳定与功能对等 代码里满是 if #available。滚动收起键盘要到 iOS 16;工具栏定制很晚才来;网络图片 AsyncImage 要到 iOS 15,缓存相关 API 到 2026 年 7 月仍在 beta。旧 API 常被换掉(如 NavigationView → NavigationStack),开发者要维护多套实现,等于替苹果做 QA。对比 Android 的 Jetpack Compose 可作为依赖打包回退到旧设备,SwiftUI 做不到“写最新 API、稳定回退”。 性能 在真实对比里,即便做了后台解码等优化,SwiftUI 图片网格滚动仍明显不如 UIKit。若展示一堆 JPEG 都得靠顶级芯片撑,架构本身就有问题。 跨平台神话 苹果说的是“学一次、到处用”,不是“写一次、到处跑”。iOS 上学到的布局很少直接适用 Mac;同一套 view 跨平台实现也不一致。结果常变成:学一次、再学一次、某处能用、处处要调。 哲学转向 最大的问题是“够用就行”:覆盖 90% 用例就算成功,用 velocity 掩盖质量下降。作者列举系统与一线应用中的各种瑕疵,认为这不是偶然,而是苹果主动降低质量门槛 - - 所以即使过了七年,他仍不信任 SwiftUI。 结论 对构建稳定、高性能、可维护系统真正重要的部分,SwiftUI 几乎都有问题。它不是“极差”,而是平庸 - - 用假便利换真精度,要么你花时间给框架打补丁,要么把半成品发出去。作者更宁愿继续用“遗留”的 UIKit / AppKit。 最后小总结: 最让人不能接受的不是“SwiftUI 还有 bug”,而是它把“看起来很快”当成了工程上的完成态。声明式、预览、跨平台,每一项都在秀高级感,可真正写进业务后,你面对的是难预测的重绘、脆弱的布局、层层 #available,以及把兼容和排错外包给业务方的现实。七年够长了,若还靠“框架还年轻”解释,那更像是对标准的侮辱。技术选型从来不只是语法偏好,而是你选的是可预期性、可维护成本,以及对用户体验的态度。平庸的“成功”往往比明显失败更危险 ,你说它能上线、能 demo、能交差,但是却在细节里一点点磨损信任。工具可以换代,但对质量的要求不该跟着一起降级。
4
ARTS 0802: 合并有序链表、AI 时代的技术断层与 TCP 200ms 延迟之谜
5
下载 APP