云程平台支持单体集中式部署、本地分布式部署、微服务容器化部署三种部署模式。本地分布式部署是一种没有云底座情况下的部署模式(这里的云底座主要指容器云平台、微服务治理平台),这种模式首先保证软件架构符合微服务化架构,通过手动方式在本地启动每个服务,一旦企业具备了微服务治理和容器云平台的云底座环境,便可无缝的切换到云平台。
此部署模式适合于企业缺乏微服务治理和容器云平台的云底座环境,或者微服务应用数量不多,不想引入和维护复杂的云原生组件,通过手动运维即可解决的情况下使用。缺点是手动部署比较繁琐,优点是系统符合微服务架构,可分布式部署,能解决传统单体应用的一些问题。
以下是本地分布式集群部署架构图,平台和业务应用每个服务都作为一个springboot项目独立启动,新增加的应用按照微服务化组件开发,部署,不会影响其它正在运行的业务。
后端需要部署的服务包括平台提供的系统管理、流程管理、电子表单三个服务,和自己基于服务组件模板开发的其他服务。
1、安装数据库
首先安装mysql数据库,注意数据库需要设置不区分大小写。
每个服务的数据表都是独立的,建表脚本在每个服务的src/main/resources/db/migration/V1__INIT_DATABASE.sql中,分别创建数据库并初始化脚本,每个服务都对应各自的一个数据库。
2、启动Redis
所有服务共用同一个Redis服务。
3、修改配置
配置文件在每个服务的src/main/resources目录下,其中application-dev.yml是开发环境配置,application-prod.yml是生产环境配置,在打包部署之前,需要分别调整好每个服务下application-prod.yml的配置。以系统管理服务为例:
服务端口和根路径配置,根路径默认为空:
数据库地址配置,每个服务对应自己的数据库:
Redis地址配置,所有服务共用同一个Redis服务:
分布式远程调用地址配置:
4、代码打包
代码开发完成后,在每个服务项目下执行打包命令“mvn clean package”,项目下会生成target目录,以系统管理为例,里面的“yuncheng-framework-starter-xxx.jar”就是打出的部署包。
5、启动运行
分别启动系统管理、流程引擎、电子表单三个服务,和自己开发的其他服务,以系统管理为例,启动服务的命令是“java –jar yuncheng-framework-starter-xxx.jar –spring.profiles.active=prod”。
1、修改配置
在项目文件public/config/bootConfig.js中,配置后端访问地址等,其中 development是开发环境配置,production是生产环境配置,在打包部署之前,需要调整好production的配置。部署之后对后台的访问路由,在后续Nginx中配置,所以这里配置VUE_APP_API为空就可以。性能监控等需要指向系统管理的地址,这里就配置VUE_APP_URL和VUE_APP_STATIC_URL指向系统管理的地址。
2、打包代码
代码开发完成后,在yuncheng-webui项目下执行打包命令“yarn run build”,项目下会生成dist目录,里面的文件就是打出的部署文件。通常情况下将 dist 目录下的静态文件发布到你的nginx或者静态服务器即可,其中的index.html是访问入口页面。
3、Nginx配置
分布式路由规则在这里配置:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
gzip_buffers 32 4k;
gzip_comp_level 6;
gzip_min_length 100;
gzip_types application/javascript text/css text/xml;
gzip_disable "MSIE [1-6]\."; #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
gzip_vary on;
server {
listen 80;
server_name localhost;
location ~ .*\.(js|css|htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma) {
root html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location /api/system {
proxy_pass http://127.0.0.1:30001;
}
location /api/bpm {
proxy_pass http://127.0.0.1:30002;
}
location /api/eform {
proxy_pass http://127.0.0.1:30003;
}
location /actuator {
proxy_pass http://127.0.0.1:30001;
}
}
}
4、启动运行
启动nginx或者静态服务器。