# 二、准备工作
# 1. 系统准备
HOS相关产品的运行和使用,依赖于公司以下系统维护基础数据,需要提前部署并成功运行:
- iMedical iBUS(李岩):通过服务总线发布、订阅系统之间的数据交互
- 生产要素平台(董红军):输出组织机构、人员信息、业务单元等数据
- DTS平台(马兆岩):输出业务域、事项域、岗位、岗位和业务单元的关系等基础数据
- 资源计划系统(徐鹏):输出人员岗位授权、人员排班等用于登录的岗位单元
- iMedical BPM(工作流系统):如果维护基础数据、开通账号等需要走流程审批,则依赖工作流系统做审批的工作
各系统之间数据交互见下图:
依赖的各系统具体的配置由该系统开发或实施人员完成,配置内容可以参考:HOS依赖系统配置
# 2. 安装文件
下载地址:请联系HOS应用研发组同事或者郑州技术支持同事获取。
HOS安装文件下载目录介绍:
├─hos-base-linux #HOS环境文件,linux环境下使用,系统为linxu必须下载
└─hos-microservice #HOS微服务安装包,必须下载
安装文件介绍:
/hos-base-linux
├─jdk #java应用,HOS后端应用运行必须环境,部署到后端服务器
├─redis #缓存服务,HOS后端应用缓存存储使用,部署到数据/缓存服务器
├─nginx #集群负载,前端跳转,部署在前端服务器
├─mysql #数据库,部署在数据服务器
├─supervisor #进程管理工具,部署在后端服务器
├─nacos #配置管理和服务管理平台,部署在数据库/缓存/文件服务器
├─minio #文件服务,部署在数据库/缓存/文件服务器
└─keepalived #集群管理工具,集群部署时使用,部署在数据库服务器和前端服务器
/hos-microservice
├─hos-framework-job-admin #任务管理平台配置文件和jar
│ ├─config #配置文件,根据项目情况更改
│ ├─hos-framework-job-admin.ini #后端应用启动文件
│ └─hos-framework-job-admin.jar #后端jar,部署运行
├─tools #小工具
│ ├─ssl #生成https证书的工具
│ ├─HeidiSQL_12.5_64bit_Portable.7z #数据库管理工具,可免安装使用
│ ├─mysql-backup.sh #数据库备份脚本
│ ├─resp-2022.1.0.0.exe #redis管理工具
│ ├─get-machine-1.0-SNAPSHOT.jar #后端服务器生成机器码的jar包
│ ├─DtPortal.Common.CA.HosCAWebService.xml #ca配置使用,导入his中,发布接口
│ ├─redis-desktop-manager-0.9.3.817.exe #redis缓存管理工具
│ ├─Postman_v8.12.5.exe #rest接口测试工具
│ ├─SoapUI-x64-5.4.0-EB.exe #webservervice接口测试工具
└─ └─SQLyog-13.2.0-0.x64Community.exe #数据库管理工具,需要安装,根据需要选择
/程序版本/2.6.1
├─data #HOS数据文件
│ ├─HIS-工作站_2024-01-03 17_45_02.xlsx #HOS门户系统工作站数据
│ └─图标管理 2024-01-03 17_45_02.xlsx #HOS门户系统图标数据
├─sql #初始化sql
│ ├─统一用户初始化sql.txt #统一用户数据库应用初始化脚本,根据项目规划ip端口更改
│ ├─hos_open_portal_1.5.0.sql #统一用户初始化sql脚本
│ └─init_xxl_job.sql #任务平台初始化脚本
├─微服务版
│ ├─config #配置文件,根据项目情况更改
│ ├─hos-open-portal-web.tgz #门户前端服务,解压部署
│ ├─hos-app.jar.jar #基础平台后端jar,部署运行
│ ├─hos-uum.jar #统一用户后端jar,部署运行
│ ├─hos-appmanager.jar #应用管理后端jar,部署运行
│ ├─hos-portal.jar #门户后端jar,部署运行
│ ├─managecenter-gateway-2.6.0-xh-SNAPSHOT.jar #网关后端jar,部署运行
│ ├─hos-auth-server.jar #统一认证后端jar,部署运行
│ ├─hos-authserver.ini #统一认证后端应用启动文件
└─ └─hos-authserver-web.tgz #统一认证前端服务,解压部署
# 3. 部署规划
在开始部署操作前,应根据实际项目服务器和网络环境,规划以下内容(基于服务器环境,如果是多服务器环境需要进行拆分调整): 微服务部署建议集群部署。
# 3.1 目录规划
# 3.1.1 单机部署
# HOS应用服务目录规划
/hos/ #安装根目录
├──app #HOS应用安装目录
│ ├─hos-portal #统一门户部署目录
│ │ ├─hos-portal-system.jar #后端应用
│ │ ├─hos-portal.ini #后端应用启动文件
│ │ ├─hos-portal-web.tgz #前端服务,解压部署,解压后可删除
│ │ ├─dist #前端应用,解压后的文件
│ │ └─config #后端配置文件,根据配置修改
│ ├─hos-open-platform #统一用户部署目录
│ │ ├─hos-open-platform.jar #后端应用
│ │ ├─hos-open-platform.ini #后端应用启动文件
│ │ ├─hos-open-platform-web.tgz #前端服务,解压部署,解压后可删除
│ │ ├─dist #前端应用,解压后的文件
│ │ └─config #后端配置文件,根据配置修改
│ ├─hos-authserver #统一认证部署目录
│ │ ├─hos-auth-server.jar #后端应用
│ │ ├─hos-authserver.ini #后端应用启动文件
│ │ ├─hos-authserver-web.tgz #前端服务,解压部署,,解压后可删除
│ │ ├─dist #前端应用,解压后的文件
│ │ └─config #后端配置文件,根据配置修改
│ ├─hos-framework-job-admin #任务平台部署目录
│ │ ├─hos-framework-job-admin.jar #后端应用
│ │ ├─hos-framework-job-admin.ini #后端应用启动文件
│ │ └─config #后端配置文件,根据配置修改
│ ├─ssl #ssl证书文件存放目录
│ │ └─hos #ssl证书名称
│ │ ├─hos.crt #ssl证书文件,nginx使用
│ │ ├─hos.csr #ssl证书文件,nginx使用
│ │ ├─hos.der #ssl证书文件,nginx使用
│ │ ├─hos.key #ssl证书文件,nginx使用
│ │ ├─hos.pem #ssl证书文件,nginx使用
│ │ ├─hos.pfx #ssl证书文件,nginx使用
│ │ └─ssl.conf #ssl证书文件,nginx使用
│ └─jdk #JAVA环境安装目录
├──logs #HOS日志保存目录
│ ├─hos #统一用户、统一认证、用户门户运行日志保存目录
│ ├─supervisor #进城平台运行日志,存储启动日志
└─ └─xxl-job #任务平台运行日志,存储任务调度日志
# HOS DB目录规划
/hos/ #HOS安装根目录
├──minio #文件存储服务安装目录
│ └─data #文件存储服务存储目录
├──redis #HOS缓存服务安装目录,安装一个redis(门户/统一用户/统一认证 共用一个)
│ └─data #缓存服务2数据存储目录
├──mysql #数据库安装目录
└─ └─data #数据库数据存储目录
# 3.1.2 集群部署
# HOS前端服务器1/HOS前端服务器2
/hos/ #安装根目录
├──app #HOS应用安装目录
│ ├─hos-portal #统一门户部署目录
│ │ ├─hos-portal-web.tgz #前端服务,解压部署,解压后可删除
│ │ └─dist #前端应用,解压后的文件
│ ├─hos-open-platform #统一用户部署目录
│ │ ├─hos-open-platform-web.tgz #前端服务,解压部署,解压后可删除
│ │ └─dist #前端应用,解压后的文件
│ ├─hos-authserver #统一认证部署目录
│ │ ├─hos-authserver-web.tgz #前端服务,解压部署,,解压后可删除
│ │ └─dist #前端应用,解压后的文件
│ ├─ssl #ssl证书文件存放目录
│ │ └─hos #ssl证书名称
│ │ ├─hos.crt #ssl证书文件,nginx使用
│ │ ├─hos.csr #ssl证书文件,nginx使用
│ │ ├─hos.der #ssl证书文件,nginx使用
│ │ ├─hos.key #ssl证书文件,nginx使用
│ │ ├─hos.pem #ssl证书文件,nginx使用
│ │ ├─hos.pfx #ssl证书文件,nginx使用
└─ └─ └─ssl.conf #ssl证书文件,nginx使用
# HOS后端服务器1/HOS后端服务器2
/hos/ #安装根目录
├──app #HOS应用安装目录
│ ├─hos-portal #统一门户部署目录
│ │ ├─hos-portal-system.jar #后端应用
│ │ ├─hos-portal.ini #后端应用启动文件
│ │ └─config #后端配置文件,根据配置修改
│ ├─hos-open-platform #统一用户部署目录
│ │ ├─hos-open-platform.jar #后端应用
│ │ ├─hos-open-platform.ini #后端应用启动文件
│ │ └─config #后端配置文件,根据配置修改
│ ├─hos-authserver #统一认证部署目录
│ │ ├─hos-auth-server.jar #后端应用
│ │ ├─hos-authserver.ini #后端应用启动文件
│ │ └─config #后端配置文件,根据配置修改
│ ├─hos-framework-job-admin #任务平台部署目录
│ │ ├─hos-framework-job-admin.jar #后端应用
│ │ ├─hos-framework-job-admin.ini #后端应用启动文件
│ │ └─config #后端配置文件,根据配置修改
│ ├─jdk #JAVA环境安装目录
│ ├─ssl #ssl证书文件存放目录
│ │ └─hos #ssl证书名称,jre导入后可删除
│ │ ├─hos.crt #ssl证书文件,jre导入后可删除
│ │ ├─hos.csr #ssl证书文件,jre导入后可删除
│ │ ├─hos.der #ssl证书文件,jre导入后可删除
│ │ ├─hos.key #ssl证书文件,jre导入后可删除
│ │ ├─hos.pem #ssl证书文件,jre导入后可删除
│ │ ├─hos.pfx #ssl证书文件,jre导入后可删除
└─ └─ └─ssl.conf #ssl证书文件,jre导入后可删除
├──logs #HOS日志保存目录
│ ├─hos #统一用户、统一认证、用户门户运行日志保存目录
│ ├─supervisor #进城平台运行日志,存储启动日志
└─ └─xxl-job #任务平台运行日志,存储任务调度日志
# HOS数据库服务器1/数据库服务器2目录规划
/hos/ #HOS安装根目录
├──nacos #服务注册安装目录
├──minio #文件存储服务安装目录
│ └─data #文件存储服务存储目录
├──redis #HOS缓存服务安装目录,安装两个redis(门户/统一用户/统一认证 共用一个)
│ ├─data-1 #缓存服务1数据存储目录
│ └─data-2 #缓存服务2数据存储目录
├──mysql #数据库安装目录
└─ └─data #数据库数据存储目录
# HOS缓存服务器目录规划
/hos/ #HOS安装根目录
├──nacos #服务注册安装目录
├──minio #文件存储服务安装目录
│ └─data #文件存储服务存储目录
├──redis #HOS缓存服务安装目录,安装两个redis(门户/统一用户/统一认证 共用一个)
│ ├─data-1 #缓存服务1数据存储目录
└─ └─data-2 #缓存服务2数据存储目录
# HOS文件服务器目录规划
/hos/ #HOS安装根目录
├──nacos #服务注册安装目录
├──minio #文件存储服务安装目录
└─ └─data #文件存储服务存储目录
# 3.2 端口规划
根据项目是单机部署还是集群部署,规划HOS应用的端口,并产出系统访问信息文档。
# 3.2.1 单机部署
应用名称 | 端口 | 应用名称 | 端口 |
---|---|---|---|
统一门户前端 | 8000 | 统一认证前端 | 8002 |
统一认证后端 | 8003 | 任务平台后端 | 8004 |
基础平台后端 | 8005 | 统一用户后端 | 8006 |
应用管理后端 | 8007 | 门户引擎后端 | 8008 |
服务网关后端 | 8009 | mysql数据库 | 3306 |
minIO API端口 | 9000 | minIO web端口 | 9001 |
redis | 6379 |
系统访问信息截图如下:
# 3.2.1 集群部署
应用名称 | 端口 | 应用名称 | 端口 |
---|---|---|---|
统一门户前端1 | 8000 | 统一认证前端1 | 8002 |
统一门户前端2 | 8000 | 统一认证前端2 | 8002 |
统一认证后端1 | 8003 | 任务平台后端1 | 8004 |
统一认证后端2 | 8003 | 任务平台后端2 | 8004 |
基础平台后端1 | 8005 | 统一用户后端1 | 8006 |
应用管理后端1 | 8007 | 门户引擎后端1 | 8008 |
服务网关后端1 | 8009 | mysql数据库1 | 3306 |
基础平台后端2 | 8005 | 统一用户后端2 | 8006 |
应用管理后端2 | 8007 | 门户引擎后端2 | 8008 |
服务网关后端2 | 8009 | mysql数据库2 | 3306 |
数据库服务器1 redis1 | 6379 | 数据库服务器1 redis2 | 6380 |
数据库服务器2 redis3 | 6379 | 数据库服务器2 redis4 | 6380 |
缓存服务器 redis5 | 6379 | 缓存服务器 redis6 | 6380 |
minIO API端口1 | 9000 | minIO API端口2 | 9000 |
minIO API端口3 | 9000 | minIO API端口4 | 9000 |
minIO web端口 | 9001 |
系统访问信息截图如下:
# 3.3 资源规划
主要针对服务器的内存、硬盘等资源的合理规划,避免出现OOM、磁盘打满的情况,避免影响应用系统。
# 3.3.1 JVM内存配置
基于服务器32GB内存的设置如下(具体根据实际服务器内存大小调整,建议设置的服务器上所有应用的内存之和不超过服务器总内存的60%):
-Xms4096m -Xmx4096m -XX:MetaspaceSize=1024m -XX:MaxMetaspaceSize=2048m
# 3.3.2 系统日志配置
系统日志保存在数据库中,HOS门户系统、统一用户等系统的登录日志、系统日志、openApi日志、接口日志的默认保存时间为180天,根据实际需求,可以在系统参数配置中修改:
# 3.3.3 日志文件配置
HOS各系统运行时产生的运行日志文件保存在服务器上,主要包括后台日志和控制台日志:
对于后台日志,默认保存30天,文件最大100MB,可以根据实际需求,修改logback配置文件logback-spring.xml
:
<!--文件日志, 按照每天生成日志文件 -->
<appender name="info_log" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/${APPLICATION_NAME}-${SERVER_PORT}.info.%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
<!--日志文件最大的大小-->
<totalSizeCap>100MB</totalSizeCap>
</rollingPolicy>
...
</appender>
<!--文件日志, 按照每天生成日志文件 -->
<appender name="error_log" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/${APPLICATION_NAME}-${SERVER_PORT}.error.%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
<!--日志文件最大的大小-->
<totalSizeCap>100MB</totalSizeCap>
</rollingPolicy>
...
</appender>
对于控制台日志,默认只保存1个文件且不超过10MB,也可以根据实际需求修改supervisor配置文件/etc/supervisord.d/*.ini
:
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=1
# 4 准备镜像
注意
- 非容器部署请忽略本步骤。
- 如果使用容器平台部署应用系统,需要从镜像仓库拉去应用系统镜像,所以需要先将各系统镜像导入到客户的镜像仓库中。
# 4.1 制作镜像
# 4.1.1 准备Docker环境
- 方式1(推荐):Linux环境,在Linux服务器上安装Docker环境,参考:Docker部署 (opens new window)
- 方式2:Windows环境,安装Docker Desktop (opens new window),类似普通软件,安装后启动即可。
# 4.1.2 准备Dockerfile
1.Java后端系统Dockerfile示例:
# 基础镜像,这里示例使用centos7系统
FROM centos:7
# 工作目录,进入容器后的默认目录
WORKDIR /hos
# 将应用系统及其依赖组件拷贝进去
COPY jdk-8u231-linux-x64.tar.gz /hos/
COPY hos-portal-system.jar /hos/hos-app.jar
# 运行必要的命令进行配置。比如这里是安装jdk并删除原文件
RUN tar zxf jdk-8u231-linux-x64.tar.gz && mv jdk1.8.0_231 jdk && rm -f jdk-8u231-linux-x64.tar.gz
# 声明端口。需要与应用系统的实际端口保持一致。这里各容器默认使用80,建议各系统保持一致
EXPOSE 80
# 应用系统启动命令,根据实际情况修改,其中$JAVA_OPTS作为环境变量可以在启动容器时传入
CMD /hos/jdk/jre/bin/java $JAVA_OPTS -jar hos-app.jar --server.port=80 -Dspring.config.location=./config
2.前端Dockerfile示例:
# 基础镜像,这里示例前端系统使用nginx
FROM nginx:1.22.1
# 工作目录,进入容器后的默认目录
WORKDIR /hos
# 将前端目录及nginx配置拷贝到容器中相应目录
COPY dist /hos/dist/
COPY hos-app.conf /etc/nginx/conf.d/default.conf
# 声明端口。需要与前端nginx配置文件的实际端口保持一致。这里各容器默认使用80,建议各系统保持一致
EXPOSE 80
# 4.1.3 制作镜像
将Dockerfile、应用系统、依赖组件等必要的内容,放到同一个目录内(该目录不要有其他不相关的文件)。进入该目录,执行以下命令生成镜像(不要漏掉命令最后的英文句号,其表示从当前目录获取容器制作所需的文件):
docker build -t hos-portal:1.0.0 .
其中,-t
参数是镜像名称及标签,根据实际情况指定。
使用以下命令查看生成的镜像:
docker images
# 4.1.4 导出镜像文件
docker save -o hos-portal-1.0.0.tar hos-portal:1.0.0
其中:
-o hos-portal-1.0.0.tar
:指定导出的镜像文件的名称,可以任意指定。hos-portal:1.0.0
:上面生成的镜像名称及标签。
将导出的镜像文件下载,通过U盘等方式拷贝到用户的容器平台环境服务器中。
# 4.2 上传镜像
获取用户已经部署的镜像仓库信息,示例如下(实际项目中使用正式的镜像仓库):
- 仓库地址:192.168.1.1
- 项目:library
- 账号密码:admin/admin123
# 4.2.1 登录镜像仓库
使用xshell等工具ssh登录到容器集群中的一台服务器,登录仓库:
docker login 192.168.1.1
#根据提示输入账号密码即可。
# 4.2.2 导入镜像
将下载的所有镜像上传到服务器上任意目录。
# 首先,将镜像导入到服务器本地,以ibip-gateway系统为例:
docker load ibip-gateway-1.0.0.tar
# 查看导入到本地的镜像,比如可以看到名称为ibip-gateway,标签为1.0.0的镜像
docker images
# 修改镜像名称和tag,目标名称为加上镜像地址和项目的新名称
docker tag ibip-gateway:1.0.0 192.168.1.1/library/ibip-gateway:1.0.0
# 将新名称镜像推送到镜像仓库
docker push 192.168.1.1/library/ibip-gateway:1.0.0
各系统均需按照以上流程将镜像导入到镜像仓库,然后登录镜像仓库,即可看到导入的镜像。