sky5454 / MCMS_MyDocs

铭飞MCMS的入手使用教程(自用,也非常欢迎PR)
MIT License
12 stars 4 forks source link

打包成SpringBoot jar形式 #2

Open sky5454 opened 5 years ago

sky5454 commented 5 years ago

以使用 Maven 打包并启动为例

mvn package
java -jar target/ms-mcms.jar

登陆 MCMS 后台管理界面,打开"系统管理"--"静态化",这时看日志(会有一条提示模板读取路径的日志) 然后把 wepapp 目录里的文件都复制到 jar 所在目录,以后可能会变,具体路径以日志为准

...............
2019-09-02 11:50:20.780 TRACE 16935 --- [nio-8080-exec-6] n.m.b.d.I.queryModelByRoleId             : <==        Row: 86, 应用设置, 12010000, 84, app/-1/edit.do, 2014-12-18 18:31:59.0, , 0, 0, 1, 84, null
2019-09-02 11:50:20.780 TRACE 16935 --- [nio-8080-exec-6] n.m.b.d.I.queryModelByRoleId             : <==        Row: 5, 角色管理, 01010000, 23, basic/role/index.do, 2014-08-03 09:15:14.0, , 0, 0, 1, 23, null
2019-09-02 11:50:20.780 TRACE 16935 --- [nio-8080-exec-6] n.m.b.d.I.queryModelByRoleId             : <==        Row: 4, 管理员管理, 01020000, 23, basic/manager/index.do, 2014-08-03 09:15:02.0, , 0, 0, 1, 23, null
2019-09-02 11:50:20.780 DEBUG 16935 --- [nio-8080-exec-6] n.m.b.d.I.queryModelByRoleId             : <==      Total: 73
2019-09-02 11:50:21.368 DEBUG 16935 --- [nio-8080-exec-3] n.m.b.d.IAppDao                          : Cache Hit Ratio [net.mingsoft.basic.dao.IAppDao]: 0.7272727272727273
2019-09-02 11:50:21.369 DEBUG 16935 --- [nio-8080-exec-3] n.m.b.a.TemplateAction                   : tempPath:/home/username/IdeaProjects/TEST0/templets/1/jFenKou

上面日志里 TemplateAction : tempPath:/后面 就是模板路径读取位置 这是我的模板路径位置,所以把模板放到这里即可(每个人路径不一样,详见打包后运行的输出日志)

目录结构如图

 $ $ tree -L 3
.
├── api
│   └── ms.people.min.js
├── html
│   └── 1
│       ├── 100
│       ├── 106
│       ├── 150
│       ├── 152
│       ├── 154
│       ├── 19
│       ├── 52
│       ├── 53
│       ├── 59
│       ├── 61
│       ├── 62
│       ├── 93
│       ├── index.html
│       └── m
├── ms-mcms.jar  (这个是以 SpringBoot 方式打包的 JAR)
├── static
│   ├── plugins
│   │   ├── amazeui
│   │   ├── animate
│   │   ├── axios
│   │   ├── banner
│   │   ├── bootstrap
│   │   ├── bootstrap.daterangepicker
│   │   ├── bootstrap.select2
│   │   ├── bootstrap-table
│   │   ├── element-tree-grid
│   │   ├── element-ui
│   │   ├── hammerjs
│   │   ├── iconfont
│   │   ├── jBox
│   │   ├── jquery
│   │   ├── jquery.cookie
│   │   ├── jquery.daterangepicker
│   │   ├── jquery.easyui
│   │   ├── jquery.mobile
│   │   ├── jquery.serializeJSON
│   │   ├── jquery.serializeObject
│   │   ├── jquery.swfupload
│   │   ├── jquery.tmpl
│   │   ├── jquery.touchswipe
│   │   ├── jquery.ui
│   │   ├── jquery.validation
│   │   ├── less
│   │   ├── minireset
│   │   ├── ms
│   │   ├── pickadate
│   │   ├── plupload
│   │   ├── qs
│   │   ├── quill
│   │   ├── seajs
│   │   ├── select2
│   │   ├── sortable
│   │   ├── tmlpjs
│   │   ├── ueditor
│   │   ├── validator
│   │   ├── vue
│   │   ├── VueDraggable
│   │   ├── vue.lazyload
│   │   ├── vue-quill-editor
│   │   ├── vue.waterfall2
│   │   ├── vuex
│   │   └── ztree
│   └── skin
│       └── manager
├── temp
├── templets
│   └── 1
│       ├── company1783
│       ├── default
│       ├── jFenKou
│       └── test
├── upload
│   ├── 1
│   │   └── article
│   ├── app
│   │   └── 1
│   ├── article
│   │   ├── 1
│   │   ├── 1569
│   │   ├── 1572
│   │   ├── 1573
│   │   ├── 1584
│   │   ├── 1585
│   │   ├── 1599
│   │   ├── 1615
│   │   └── 1638
│   ├── editor
│   │   ├── 1
│   │   ├── 1463190514061.jpg
│   │   ├── 1463190540814.jpg
│   │   ├── 1464250011559.jpg
│   │   ├── 1464250043270.jpg
│   │   ├── 1464250099001.jpg
│   │   ├── 1464250137478.jpg
│   │   ├── 1464250177772.jpg
│   │   ├── 1464250218146.jpg
│   │   ├── 1464250462392.jpg
│   │   ├── 1464250471969.jpg
│   │   ├── 1464250490621.jpg
│   │   ├── 1464250506010.jpg
│   │   ├── 1464250700988.jpg
│   │   ├── 1569
│   │   ├── 1573
│   │   ├── 1579
│   │   └── 1580
│   ├── mall
│   │   └── product
│   └── product
│       └── 1
└── WEB-INF
    └── manager
        ├── cms
        └── main.ftl

100 directories, 17 files
sky5454 commented 5 years ago

目前能确定 htmltempletsupload三个目录是默认从外部读取的,其他未知,暂时没有看那一部分的源码

sky5454 commented 5 years ago

如果由模板生成的静态HTML之类的文件不全,可以试着把 “列表”改为“封面”,然后生成栏目文章,然后再改回“列表”生成栏目文章

sky5454 commented 5 years ago

另外,如果还是想用 war 包部署方式(不推荐),参阅: 以下未测试,不知道 mcms 有没有把静态资源外置

sky5454 commented 5 years ago

如果需要高性能,请使用 jar + NGINX 反向代理 负载均衡的方式。 (反向代理可以实现将请求分发给其他服务器/springboot 服务,负载均衡用来分担流量压力给各机子/服务)

单机部署:例如可以把静态资源放在 nginx 资源目录下,然后直接访问 html 就是访问 nginx 下的文件了。然后配置反向代理把 API 地址转给 jar (springboot 服务所配置的地址)

总体图示:

A ------> B 代表使用 NGINX 反向代理将符合A地址的请求交给B处理




  1. 单机部署

    单 jar + 单个 Nginx 服务器

动态地址 ----> jar(springboot)
静态地址 -----> NGINX (1号,并作为网关)

  1. 小型分布式

    单 jar + 多个 Nginx 服务器

动态地址 ----> jar(springboot)
静态地址 -----> NGINX (N 个 NGINX 服务,只处理静态资源) 负载均衡和反向代理 --------- NGINX (另外一个 Nginx 服务,作为网关,使用负载均衡使得N 个 Nginx 被均匀使用)

这样就可以实现多台机子合理分担流量压力

  1. 大型分布式

    多个 jar + 多个 Nginx 服务器

参考2. 小型分布式,然后想办法把 jar 包改成分布式共享的

可能有用的参考: