# 独立安装

文档中以MySQL数据安装为示例进行安装。

# 安装介质说明和准备

独立安装介质内置了AFcenter,无需再安装AFCenter环境。

独立安装介质目录如下:

Primeton_MDM_7.1_LA2_Standalone
├── clearLog.cmd
├── clearLog.sh
├── readme.txt
├── server
│   ├── mdm
│   │   ├── bin
│   │   ├── config
│   │   ├── db-scripts
│   │   ├── lib
│   │   └── mdmall-boot-7.1.0-exec.jar // 主数据主程序
│   └── primetonlicense.xml
├── shutdown.cmd
├── shutdown.sh
├── startup.cmd
├── startup.sh
└── web
    ├── afcenter  //全部前端资源
    │   ├── assets
    │   ├── bfp
    │   ├── components
    │   ├── config
    │   ├── formDesigner
    │   ├── ide
    │   ├── index.html
    │   ├── mdm // 主数据前端资源
    │   ├── process
    │   ├── remoteEntry.js
    │   ├── remoteEntry.js.gz
    │   ├── static
    │   └── version.properties
    └── conf
        └── mdm.conf

# 确认版本证书是否过期

查看目录中文件server/primetonlicense.xml里 与当前时间对比是否过期

# 数据库初始化

如果执行的是mysql的脚本,请在执行脚本之前将数据库设置不区分表名大小写。

# 创建数据库

创建mdm和mdm_pub两个数据库。执行如下脚本:

CREATE DATABASE `mdm` DEFAULT CHARACTER SET utf8mb4;
CREATE DATABASE `mdm_pub` DEFAULT CHARACTER SET utf8mb4;

# 执行初始化脚本

独立介质安装时需要按顺序执行EOS、AFCenter、MDM的数据库初始化脚本。初始化脚本路径为

Primeton_MDM_7.1_LA2_Standalone/server/mdm/db-scripts,其中包括了EOS、AFCenter、bfp、lowcode、MDM的脚本。

mdm数据库初始化,可以按如下两种方式执行脚本(两种方式选择其一即可):

# 一步执行:
all/mysql/mdm-all.sql
# --------------------------------
# 分步执行:
afcenter/Mysql/all.sql
bfp/Mysql/all.sql
eos/Mysql/all.sql
lowcode/Mysql/all.sql

mdm/mysql/00-mdm-afc-data.sql #此脚本必须在afcenter初始化后执行
mdm/mysql/01-afc-template-data.sql #此脚本必须在afcenter初始化以后,但独立介质后端启动之前执行
mdm/mysql/10-mdm-ddl.sql
mdm/mysql/11-mdm-data.sql

mdm_pub数据库初始化,执行如下脚本:

all/mysql/mdmpub-all.sql

# 添加驱动

检查server/mdm/lib目录下包含使用的数据库对应的驱动, 默认支持的数据库驱动及版本如下:

数据库厂商 驱动名 版本
mysql mysql-connector-java 8.0.17
oracle ojdbc6 11.2.0.3
dameng DmJdbcDriver18 8.1.1.193
openGauss opengauss-jdbc 3.0.0
sqlserver sqljdbc4 4.0

# 后端修改配置文件

# 1.数据库配置文件:config/MDM/config/user-config.xml

修改default与MDM_PUB配置:驱动DriverClass、Url、UserName、Password

<group name="default">
    <configValue key="Database-Type">MySql</configValue># db类型
    <configValue key="Jdbc-Type"/>
    <configValue key="C3p0-DriverClass">com.mysql.cj.jdbc.Driver</configValue>#db驱动
    <configValue key="C3p0-Url">jdbc:驱动类型://IP:端口Port/mdm?useSSL=false</configValue>
    <configValue key="C3p0-UserName">用户名</configValue>
    <configValue key="C3p0-Password">密码</configValue>
    <configValue key="C3p0-PoolSize">5</configValue>
    <configValue key="C3p0-MaxPoolSize">30</configValue>
    <configValue key="C3p0-MinPoolSize">5</configValue>
    <!-- //seconds, 0 means connections never expire -->
    <configValue key="C3p0-MaxIdleTime">0</configValue>
    <!-- //idle connections never tested -->
    <configValue key="C3p0-IdleConnectionTestPeriod">0</configValue>
    <configValue key="C3p0-MaxStatements">0</configValue>
    <configValue key="C3p0-NumHelperThreads">3</configValue>
    <configValue key="Transaction-Isolation">ISOLATION_DEFAULT</configValue>
    <configValue key="Test-Connect-Sql">SELECT count(*) from EOS_UNIQUE_TABLE</configValue>
    <configValue key="Retry-Connect-Count">-1</configValue>
</group>
<group name="MDM_PUB">
    <configValue key="Database-Type">MySql</configValue># db类型
    <configValue key="Jdbc-Type"/>
    <configValue key="C3p0-DriverClass">com.mysql.cj.jdbc.Driver</configValue>#db驱动
    <configValue key="C3p0-Url">jdbc:驱动类型://IP:端口Port/库db/mdm_pub?useSSL=false</configValue>
    <configValue key="C3p0-UserName">用户名</configValue>
    <configValue key="C3p0-Password">密码</configValue>
    <configValue key="C3p0-PoolSize">5</configValue>
    <configValue key="C3p0-MaxPoolSize">30</configValue>
    <configValue key="C3p0-MinPoolSize">5</configValue>
    <!-- //seconds, 0 means connections never expire -->
    <configValue key="C3p0-MaxIdleTime">0</configValue>
    <!-- //idle connections never tested -->
    <configValue key="C3p0-IdleConnectionTestPeriod">0</configValue>
    <configValue key="C3p0-MaxStatements">0</configValue>
    <configValue key="C3p0-NumHelperThreads">3</configValue>
    <configValue key="Transaction-Isolation">ISOLATION_DEFAULT</configValue>
    <configValue key="Test-Connect-Sql">SELECT count(*) from EOS_UNIQUE_TABLE</configValue>
    <configValue key="Retry-Connect-Count">-1</configValue>
</group>

# 2.主数据配置文件:config/application.properties

# --------------------------------------配置案例---------------------------------------------------
# 微服务唯一标识(不可更改)
spring.application.name=MDM
# session有效期
server.servlet.session.timeout=PT120M
# 后端端口号
server.port=28090
# 激活afc和mdm配置文件
spring.profiles.active=nacos,afc,mdm

# 是否开启文件上传下载(默认为是)
spring.servlet.multipart.enabled=true
# 单次请求大小限制
spring.servlet.multipart.max-request-size=100MB
# 单个文件大小限制
spring.servlet.multipart.max-file-size=20MB
# 文件上传路径
spring.servlet.multipart.location=${user.dir}/data/upload-tmp
# 文件写入磁盘阈值
spring.servlet.multipart.file-size-threshold=100KB

# 全局设置@JsonFormat的格式pattern
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
# 设置全局时区
spring.jackson.time-zone=GMT+8
# 全局设置pojo或被@JsonInclude注解的属性的序列化方式,不为空的属性才会序列化
spring.jackson.default-property-inclusion=non-null
# 是否在存在不对应的参数时也将请求参数正常解析(当为false时默认为是)
spring.jackson.deserialization.fail-on-unknown-properties=false

# 任务调度线程池大小
spring.task.scheduling.pool.size=5
# 任务执行线程池大小
spring.task.execution.pool.core-size=50
# 任务执行线程池最大值
spring.task.execution.pool.max-size=100
# 任务执行线程池排队容量大小
spring.task.execution.pool.queue-capacity=100000

# 公开端点
management.endpoints.web.exposure.include=hystrix.stream,health,info,loggers,eos

# hystrix执行最大超时时间
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=10000
# hystrix并发执行的最大线程数
hystrix.threadpool.default.coreSize=100
# hystrix最大线程数
hystrix.threadpool.default.maximumSize=100
# hystrix最大队列数
hystrix.threadpool.default.maxQueueSize=100000
# hystrix动态最大队列数
hystrix.threadpool.default.queueSizeRejectionThreshold=100000

# redis地址
spring.redis.host=地址
# redis端口号
spring.redis.port=端口号
# redis密码
spring.redis.password=密码
# redis连接池最大连接数
spring.redis.lettuce.pool.max-active=100
# redis连接池中最多保留的空闲连接数量
spring.redis.lettuce.pool.max-idle=100
# redis从连接池获取连接最大的等待时间
spring.redis.lettuce.pool.max-wait=5000

# eos微应用编码
eos.application.sys-code=EOS-DEMO-SYS
# eos微应用密钥
eos.application.sys-key=dc6baaed30e541d78bb91274803d9432
# eosadmin端口
eos.admin.port=6500
# eos缓存模式
eos.cache.mode=redis

# 配置文件目录
out.config.folder=config
is.global.unique=false
# bps微应用名称
bps.application.name=BPS-SERVER-STANDALONE
# bps租户id
bps.tenant.id=BPS_DEFAULT_TENANT
# 是否开启eos日志(默认开启)
engine.show.log=true
#---------------------------------------可按需修改------------------------------------------
# 如果要更改端口,则修改  
server.port=xxx  

# redis连接配置:换成以上获取到的redis的连接属性
spring.redis.host=xxx  
spring.redis.port=6379 
spring.redis.password=primeton 

# 3.主数据配置文件:config/application-afc.properties

# --------------------------------------配置案例---------------------------------------------------
# 排除自动配置
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration

# afc日志转为历史
afc.schedule.logs-to-history.cron=0 0 4 1 1/1 ?
# afc历史保留时间(按月)
afc.schedule.logs-to-history.keep-month-number=2

# 是否使用AfcUserLoginFilter
afc.user.login.filter.enable=true

# 4.主数据配置文件:config/application-mdm.properties

# --------------------------------------配置案例---------------------------------------------------
# 是否开启延时加载(默认为否)
spring.jpa.open-in-view=false
# 是否关闭验证逻辑(默认关闭)
spring.jpa.properties.javax.persistence.validation.mode=none
# 指定数据库初始化模式(默认为不同步数据库表结构)
spring.jpa.hibernate.ddl-auto=none
# 是否开启sql打印(默认关闭)
spring.jpa.show-sql=false

# 数据库厂商方言配置
## MySQL
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

## Dameng 
#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.DmDialect

## GaussDB
#spring.jpa.database=postgresql
#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL9Dialect
#spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults = false

## Oracle
# spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect

## SQLServer
# spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect

# 订阅推送设置心跳检测订阅者服务是否在线时间间隔
mdm.schedule.fixed-delay.mdm-inst-heart-beat=300000
# 报告统计间隔
mdm.report.statistic.interval=0 0 * * * ?
# 数据文件储存类型
mdm.data-file.storage-type=file
# 数据文件储存位置
mdm.data-file.storage-location=./data/data-files
# 是否开启数据模型缓存(默认为是)
mdm.data-model-cache.enabled=true
# 是否开启统一响应(默认为是)
mdm.support-unified-response=false
# 是否开启数据记录日志(默认为是)
mdm.data.record.log.enabled=true
# 是否开启数据推送(默认为是)
mdm.push.enabled=true
# 是否开启锁(默认为是)
mdm.push.lock-enabled=true
# 核心线程池大小
mdm.push.thread-pool.corePoolSize=50
# 最大线程池大小
mdm.push.thread-pool.maxPoolSize=100
# 队列线程池大小
mdm.push.thread-pool.queueCapacity=200
# 推送扫描间隔(单位为秒)
mdm.push.scan.interval-seconds=60
# 推送数据每页大小
mdm.push.data-page-size=10
# 推送数据步长
mdm.push.data-step-minutes=30
# 是否开启响应体验证(默认为是)
mdm.push.http.validate-response-body.enabled=true
# 响应体code属性
mdm.push.http.validate-response-body.code-attr=code
# 响应体msg属性
mdm.push.http.validate-response-body.msg-attr=message
# 响应体发送成功响应码
mdm.push.http.validate-response-body.ok-code=200

# 推送重试间隔
mdm.push.time-mistake-seconds=30
# 即时推送队列池大小
mdm.push.in-time.event-queue-size=100000

# 是否开启序号清空(默认为是)
mdm.block-sequence-code.clear=true
# 序号清空间隔时间
mdm.block-sequence-code.clear.interval=0 0 2 * * ?

# 是否开启数据查询日志(默认为是)
mdm.op-log.data-query.enabled=true
# 是否开启数据维护日志(默认为否)
mdm.op-log.data-maintain.enabled=false
# 是否开启日志自动清理(默认为否)
mdm.op-log.clean.enabled=false
# 日志自动清理间隔
mdm.op-log.clean.keep-days=30
# 日志自动清理时间
mdm.op-log.clean.scheduled=0 0 3 * * ?

# 主题同步间隔
mdm.afc.copy.scheduled.time=5000

# 邮件服务协议地址  
spring.mail.host=smtp.126.com
# 用来发送邮件的邮箱地址  
spring.mail.username=xxxxx@126.com
# 邮箱密码 
spring.mail.password=
# 邮箱协议
spring.mail.protocol=
# 邮件编码规则
spring.mail.default-encoding=UTF-8
#---------------------------------------可按需修改------------------------------------------
# 推送email配置
spring.mail.host=邮箱host
spring.mail.username=邮箱地址
spring.mail.password=密码 
spring.mail.protocol=协议  
spring.mail.default-encoding=UTF-8

# 如果要更改db库厂商,则开放对应配置对应方言  
## MySQL  
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
## Dameng
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.DmDialect  
## GaussDB
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL9Dialect  
## Oracle  
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect  
## SQLServer  
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect  

# 前端配置

nginx网关配置server,前端静态资源、afc、mdm

upstream mdmapp {
	server 127.0.0.1:28090; # 主数据部署后端ip:port
}
server {
    listen 80;

    client_max_body_size 20M; #限制请求体的大小,默认是1M
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1";
    add_header Content-Security-Policy "script-src * 'unsafe-inline' 'unsafe-eval'";
    add_header X-Frame-Options "SAMEORIGIN";
    add_header Strict-Transport-Security "max-age=SECONDS";
    add_header Referrer-Policy "no-referrer" always;
    add_header X-Permitted-Cross-Domain-Policies "master-only";
    add_header X-Download-Options noopen;

    location / {
        root  /XXX/afcenter;# 根据前端资源所在当前机器路径
        index  index.html index.htm;
    }
	
	location ^~/api/ {
        proxy_set_header X-EOS-SourceSysKey 359e22bf398043cb866a92dc1cbbd3f6;
        proxy_pass http://mdmapp;
    }

    location ~/(.*)/api/ {
        proxy_set_header X-EOS-SourceSysKey 359e22bf398043cb866a92dc1cbbd3f6;
        rewrite ^/(.*)/api/(.*)$ /api/$2 break;
        proxy_pass http://mdmapp;
    }

}

# 启动服务

  • linux:

1.复制文件夹server/mdm到服务器运行目录

2.执行脚本:bin/startup.sh,查看日志logs/eos-trace.log

3.启动nginx: /usr/local/nginx/sbin/nginx -s start

4.访问http://nginx机器IP:前端Port

  • windows:

1.复制文件夹server/mdm到服务器运行目录

2.执行脚本:bin/startup.cmd,查看日志logs/eos-trace.log

3.启动nginx: nginx.exe -s start

4.访问http://nginx机器IP:前端Port

# 环境登录和验证

访问http://nginx机器IP:前端Port,使用初始用户登录,用户名/密码为:admin/000000

1.进入[组织权限中心]->[账号管理]->[账号:admin]

2.为账号添加角色【主数据管理员】

3.刷新页面,导航栏增加菜单【主数据】,点击即可进入主数据首页