目录
参考:
http://www.jeecg.com/
JeecgBoot开发文档
https://github.com/jeecgboot/jeecg-boot
最近项目想要使用jeecg代码脚手架进行开发,故对此进行了学习。
- JeecgBoot是一款基于BPM的低代码平台!
- 前后端分离架构
SpringBoot 2.x,SpringCloud,Ant Design&Vue,Mybatis-plus,Shiro,JWT,支持微服务
。 - 强大的代码生成器让前后端代码一键生成,实现低代码开发!
- JeecgBoot引领新低代码开发模式 OnlineCoding-> 代码生成器-> 手工MERGE
- 一系列低代码能力:Online表单、Online报表、Online图表、表单设计、流程设计、报表设计、大屏设计 等等…
源代码目录结构
可通过https://github.com/jeecgboot/jeecg-boot下载JeecgBoot相关源码,其源码结构如下:
后端代码目录结构如下
项目结构
├─ jeecg-boot-parent(父POM: 项目依赖、modules组织)
│ ├─ jeecg-boot-base(共通模块: 工具类、config、权限、查询过滤器、注解、接口等)
│ ├─ jeecg-boot-module-demo 示例代码
│ ├─ jeecg-boot-module-system (系统管理权限等功能) -- 默认作为启动项目
│ ├─ jeecg-boot-starter(微服务starter模块,不需要微服务可以删掉)
│ │ ├── jeecg-boot-starter-cloud -- 微服务启动starter
│ │ ├── jeecg-boot-starter-job -- xxl-job定时任务starter
│ │ ├── jeecg-boot-starter-lock -- 分布式锁starter
│ │ ├── jeecg-boot-starter-rabbitmq -- 消息中间件starter
│ │ ├── jeecg-boot-starter-redis -- redis缓存starter
│ ├─ jeecg-cloud-module(微服务生态模块,不需要微服务可以删掉)
│ │ ├── jeecg-cloud-nacos --Nacos服务模块(8848)
│ │ ├── jeecg-cloud-gateway --微服务网关模块(9999)
│ │ ├── jeecg-cloud-monitor --微服务监控模块 (9111)
│ │ ├── jeecg-cloud-system-start --System微服务启动项目(7001)(采用此项目启动system就变成了微服务)
│ │ ├── jeecg-cloud-xxljob --微服务xxljob定时任务服务端 (9080)
单体启动
在使用JeecgBoot进行开发前的首要任务,就是先把JeecgBoot脚手架启动起来,启动方式分为单体、微服务模式,
为了快速入门,可以先通过单体模式启动,后续到生产环境时再启用微服务模式。
后端
(1)初始导入jeecg系统DB
执行jeecg-boot/db/jeecgboot-mysql-5.7.sql,可选择本地或其他环境mysql数据库,
之后需保证后续mysql连接配置和所选DB一致即可。
(2)修改启动配置jeecg-boot-module-system中application-dev|test|prod.yml
修改mysql(即第(1)步中初始化的DB)、redis连接(自搭建或其他可用redis)、文件上传位置配置
(3)执行maven install -P
需要替换maven settings.xml文件中mirrors为如下内容
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*,!jeecg,!jeecg-snapshots,!getui-nexus</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
执行如下命名进行构建
# 默认构建dev
maven install -Dmaven.test.skip=true -P dev
# 可通过-P进行切换
maven install -Dmaven.test.skip=true -P test
maven install -Dmaven.test.skip=true -P prod
注:
-P指定的profile即对应第(2)步中application-{profile}.yml,
即-P指定构建那个profile,那就修改对应的application-{profile}.yml文件,
例如maven install -Dmaven.test.skip=true -P test,则需修改jeecg-boot-module-system中application-test.yml配置文件
(4)右键执行启动jeecg-boot-module-system/src/main/java/org/jeecg/JeecgSystemApplication.java
启动成功后即可访问:
Druid监控
http://localhost:8080/jeecg-boot/druid
账号密码:admin / 123456
在线接口文档swagger
http://localhost:8080/jeecg-boot/doc.html
账号密码:jeecg / jeecg1314
前端
(1)安装nodejs
可以去官网下载安装包自行安装,安装完成后设置nodejs镜像库
# npm镜像
npm config set registry https://registry.npm.taobao.org --global
npm config set disturl https://npm.taobao.org/dist --global
(2)安装yarn
npm i yarn -g
设置yarn镜像库
# yarn镜像
yarn config set registry https://registry.npm.taobao.org --global
yarn config set disturl https://npm.taobao.org/dist --global
(3)前端下载依赖yarn install
在前端项目根目录ant-design-vue-jeecg执行如下命令
yarn install
本地启动
(4)修改配置文件env.development
修改env.development中连接为后端连接,如下VUE_APP_API_BASE_URL即对应我们之前启动的后端服务,其他配置暂且不用修改
NODE_ENV=development
VUE_APP_API_BASE_URL=http://localhost:8080/jeecg-boot
VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas
VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreviewyarn install
(5)点击命令serve启动前端
如下即为启动成功
启动成功后即可访问:
前端管理界面
http://localhost:3000
账号密码: admin / 123456
前端打包发布build
(4)修改配置文件env.production
修改env.production中连接为后端连接,如下VUE_APP_API_BASE_URL即对应我们线上环境启动的后端服务,其他配置暂且不用修改
NODE_ENV=production
VUE_APP_API_BASE_URL=http://localhost:8080/jeecg-boot
VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas
VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreviewyarn install
(5)执行npm run build
build完成后台会生成一个dist的目录该目录下即为build后的文件。
(3)部署nginx服务器
例如将dist目录拷贝到服务器/nodejs/dist目录下,则对应的nginx配置如下:
server {
listen 80;
server_name localhost;
#后台服务配置,配置了这个location便可以通过http://域名/jeecg-boot/xxxx 访问
location ^~ /jeecg-boot {
proxy_pass http://127.0.0.1:8080/jeecg-boot/;
proxy_set_header Host 127.0.0.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#解决Router(mode: 'history')模式下,刷新路由地址不能找到页面的问题
location / {
# 官方示例给的html目录,即将dist文件拷贝到/etc/nginx/html目录下(nginx安装目录下html文件夹)
# root html;
# 实际root存放位置及对应项目build完成后dist存放目录,及之前提到的/nodejs/dist目录
root /nodejs/dist;
index index.html index.htm;
if (!-e $request_filename) {
rewrite ^(.*)$ /index.html?s=$1 last;
break;
}
}
}
亦可使nginx开启压缩,提高首页访问效率,nginx.conf 的 http 中加入以下片断
# gzip config
gzip on;
gzip_min_length 1k;
gzip_comp_level 9;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";
线上基于K8S部署单体JeecgBoot
本地启动成功后,仅适用于本地开发调试,
为了给公司小伙伴提供一个统一的学习测试用的Jeecgboot平台,最终需要将该jeecg单体应用部署到线上K8s环境中。
有了之前的前、后端启动经验,接下来要做的就是:
修改代码配置为线上环境相关配置
- 初始导入线上环境jeecg系统DB
- 修改后端jeecg-boot-module-system中application-test.yml中mysql、redis连接配置对应线上环境
- 修改前端配置文件env.production,使其中配置指向线上部署后的后端服务URL
制作后端docker镜像
- 构建后端:maven install -Dmaven.test.skip=true -P test
- 获取jeecg-boot-module-system-2.4.6.jar
- 使用已有或者自制Java docker镜像,然后将jeecg-boot-module-system-2.4.6.jar拷贝到镜像中,通过java -jar命令启动
- 提交并推送新制作的后端docker镜像到镜像仓库
制作前端docker镜像
- 执行npm run build
- 使用已有或者自制nginx docker镜像,然后将/dist目录拷贝到镜像中,修改nginx相应配置
- 提交并推送新制作的前端docker镜像到镜像仓库
k8s部署前后端
- 后端基于Demployment + NodePort Service进行编排
- 前端基于Demployment + NodePort Service进行编排
访问JeecgBoot
通过K8s NodePort Service,即可将对应服务的NodePort端口暴露在K8s集群的任一节点上,
例如后端服务NodePort为20505,前端服务的NodePort为20404,K8s集群中存在节点192.168.1.16,则:
后端服务URL:http://192.168.1.16:20505/jeecg-boot/druid, http://192.168.1.16:20505/jeecg-boot/doc.html
前端服务URL:http://192.168.1.16:20404
默认账号密码
后端Druid监控
http://localhost:8080/jeecg-boot/druid
账号密码:admin / 123456
后端在线接口文档swagger
http://localhost:8080/jeecg-boot/doc.html
账号密码:jeecg / jeecg1314
前端管理界面
http://localhost:3000
账号密码: admin / 123456