# 二、准备工作

# 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

系统访问信息截图如下:

port-plan-1.png

# 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

系统访问信息截图如下:

port-plan-2.png

# 3.3 资源规划

主要针对服务器的内存、硬盘等资源的合理规划,避免出现OOM、磁盘打满的情况,避免影响应用系统。

# 3.3.1 JVM内存配置

基于服务器32GB内存的设置如下(具体根据实际服务器内存大小调整,建议设置的服务器上所有应用的内存之和不超过服务器总内存的60%):

-Xms4096m -Xmx4096m -XX:MetaspaceSize=1024m -XX:MaxMetaspaceSize=2048m

# 3.3.2 系统日志配置

系统日志保存在数据库中,HOS门户系统、统一用户等系统的登录日志、系统日志、openApi日志、接口日志的默认保存时间为180天,根据实际需求,可以在系统参数配置中修改:

img.png

# 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环境

# 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

各系统均需按照以上流程将镜像导入到镜像仓库,然后登录镜像仓库,即可看到导入的镜像。