背景
玩了一下开源项目 RuoYi 管理系统Cloud 版,卡住的地方是:它用到了 nacos 配置管理,如果用的 nacos 环境是单机且是内置数据库的话,该怎么配置呢?
本文整理本机启动 RuoYi Cloud 应用本地部署的过程,关键两个点:
- 使用已有的 Nacos 环境且无数据库的版本,需要手动创建需要的配置文件。
- nacos 配置有认证,需要在 bootstrap.yml 配置中添加 nacos 的账号和密码。
- 思考一个问题,Web 应用使用 https 部署的时候,前端敏感信息如 username、password 等信息,是否可以不加密提交呢?
准备工作
- 下载 若依管理系统源码 后,在本地解压。
- 使用 sql 文件夹的脚本创建数据库,它里面用到三个库, ry-cloud【管理系统库】, ry-config【nacos 配置管理库】,ry-seata【分布式事务管理】。quartz.sql 可以用 ry-cloud 库,编辑脚本,在行首加上
use ry-cloude;
,其他两个库,先创建,但是可以不用。
Nacos 配置创建
官方部署文档里面,部署 nacos 时使用 mysql 数据库版本,且数据库就用 sql 里面的 ry-config 数据库,这样的话,直接通过脚本初始化了全部配置。
但是,对于已经有的 nacos 环境,该怎么办呢?数据库版本的话,可以直接导入配置管理的数据。对于 nacos 非数据库部署方式来说,就需要手动创建配置了。
第一步 ,nacos 系统中为当前项目创建一个命名空间 ry
。
第二步 ,打开 ry-config 数据库中 config_info 表中的数据,确定 data_id 和内容: 第三步 ,在 ry 命名空间下,逐个以 data_id 为配置名称,content 为内容创建配置。 第四步,逐个点开配置进行修改,主要是 Redis 、datasource 配置,改为我们实际环境的信息。
优化建议
: 因为 application-dev.yml 配置是所有模块共享的,所以可以将 Redis 和 datasource 配置统一放到这个配置文件中:
后端服务启动
在 IDEA 中导入项目源码后,需要针对每个组件的 bootstrap.yml ,修改 nacos 配置中心和注册中心的地址、帐号和密码,默认项目中都没有帐号和密码的。
根据需要启动组件进行修改,必须启动的组件有:
- ruoyi-gateway
- ruoyi-modules/ruoyi-system
- ruoyi-auth
针对这三个组件,逐个修改 bootstrap.yml 配置:
yml
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: IP:port
namespace: ry
username: nacos
password: xxx
config:
# 配置中心地址
server-addr: IP:port
namespace: ry
username: nacos
password: xxx
# 配置文件格式
file-extension: yml
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
对nacos 注册中心和配置中心,分别添加 namespace、username、password
三项配置。
然后就可以逐个启动后台服务了,启动后在 nacos 注册中心查看服务列表:
前端安装及启动
首先,进入 ruoyi-ui 前端目录,在命令行执行安装命令:
bash
npm install --registry=https://registry.npmmirror.com
再以开发模式启动:
bash
npm run dev
最后访问系统首页:
系统服务监控
「系统监控-Admin控制台」它直接用的 SpringBoot Admin 功能,通过@EnableAdminServer
实现的。 访问的账号和密码是在 ruoyi-monitor-dev.yml 配置中,可以按需要修改。 进入服务监控页面:
启示录
想到公司一个流量采集产品,它能采集 http 流量,但是对 https 流量还是没有办法的。那么我们在 Web 应用中,如果直接部署为 https 协议,是不是不用对敏感表单加密了呢?
这么多年前端对敏感信息如username、password 等信息,都是在前端加密后再提交的。但是这个开源项目的登录,以及 SpringBoot Admin 的登录,都是直接提交明文信息的
,为什么呢? 是加密传输复杂呢,还是明文传输没危险呢?以我这么多年的开发经验来说,前端明文传输敏感信息,终归是不妥的。
PS:今日立冬!人不能同时拥有青春和对青春的感受,何止是青春呐!