Appearance
部署会众云平台(内置数据库Windows Server版本)
特别说明
必须是实体Window服务器,禁止使用虚拟Window!!!
必须是实体Window服务器,禁止使用虚拟Window!!!
必须是实体Window服务器,禁止使用虚拟Window!!!
注意,处理器需要包含虚拟化功能,否则会有以下报错( 云服务器基本都不支持,因为云服务器已经虚拟化了 ):

提示
容器镜像内已内置了全部数据库驱动程序,无需单独安装数据库服务,只需简单配置后就可使用
1.安装docker
特别说明
在上一个安装成功之前,不可以执行后续步骤!!!
在上一个安装成功之前,不可以执行后续步骤!!!
在上一个安装成功之前,不可以执行后续步骤!!!
Window-Server 对操作的先后顺序极为敏感!!! 为避免麻烦,请勿跳步骤执行安装部署!!
先决条件
Window Server 2022
及以上
注意1:低版本 Windows Server 安装极易失败,处理过于繁琐,遂不在本文说明范围内
注意2:Windows Server 的 21H2 版本有重大兼容性问题,强烈建议提升至更高版本!!!
- 具备 Hyper-V 和 Containers 特性
- 至少8GB内存
1.1.开启服务器特性
提示
以下两项特性均需要以 管理员身份
启动 Powershell
控制窗口来完成。
可以直接 鼠标右键
单击左下角的 Win 图标
,或者按下快捷键 "Win + X
",弹出如下弹窗中,选择 Windows PowerShell(管理员)

Hyper-V 特性
以管理员身份打开 Powershell
控制台。
然后输入以下命令,并回车
powershell
Install-WindowsFeature -Name Hyper-V
Containers 特性
以管理员身份打开 Powershell
控制台。
然后输入以下命令,并回车
powershell
Install-WindowsFeature -Name containers
确认以上两项安装完毕后, 重启服务器 。
提示
以上两项特性安装时,均会有类似控制台输出

等待它流程走完即可。这个过程可能比较 耗时 。
1.2.安装 WSL-2
安装方式
由于存在不可控的网络问题,以及其他的类似的现场环境问题,会导致便捷安装失败,所以下文分别提供了 自动安装 与 手动安装 两种方式,任选其一即可。
1.2.1 自动安装
注意
为了后续 Docker Desktop
的安装顺利,此步是必要的。
参考文档来源:⇲Windows Server 安装 WSL
Windows Server 2019(版本 1709+)
或更高。 强烈推荐 使用Window Server 2022
,低版本安装时会出现兼容性问题,失败概率较高。
以 管理员身份
打开 Powershell
控制台。
然后输入以下命令,并回车:
powershell
wsl --install
提示
等待流程走完即可

等待流程走完,然后重启服务器,使 wsl
生效:

重启后,打开 Powershell
控制台,输入如下命令,若显示与下图类似,则为安装成功
powsershell
wsl -l -v

wsl --install 多次失败
如果上述命令的安装反复失败,无法成功,有如下原因:
系统版本太低
(wsl --install
的最低支持版本是window-server 2022
)
- 此情况如果不能接受
重装系统
的话,那便只能 ⇲手动安装。
- 系统
内核版本太低
(版本1709
是最低支持版本,但建议是高于1903
,可在设置->系统->系统信息/关于
中查阅到当前系统的内部版本)
- 此情况直接在
系统更新
界面检查更新即可。确保服务器网络环境通畅
- 系统
网络环境太差
/ 特殊原因无法访问微软官方的部分链接
- 如果无法处理/不知道如何处理网络环境的改善问题,则只能选择 ⇲手动安装
其他情况
- 极小概率出现,一旦出现,可选方案只有 ⇲手动安装 。
然后执行以下命令确保 wsl版本和内核
为最新版:
powsershell
wsl --update
警告
此步骤执行时,会出现和 wsl --install
相似的日志信息,需要耐心等待 进度条
走完,确保更新完成后,再执行后续流程。
否则有极大概率使后续安装失败,届时再来修复将会非常繁琐
网络原因导致更新失败参考例图:
若遇到类似情况,建议直接跳到 ⇲手动安装 。
1.2.2 手动安装
参考官方文档
以下两篇均为微软官方文档,分别对应不同的控制端操作,倘若后续步骤不符合实际服务器环境,可以点击下方链接,前往微软原文对比步骤差异。
命令拆分,逐步安装:⇲旧版本Window的手动安装步骤
命令整合,一键安装:⇲在Windows Server 上安装
注意:如果一键安装出现问题,建议回到前一篇文章采用分步骤方式安装。
注意
后续手动安装均采用 第一篇文档 作为参考,一方面是其普及范围更广,另一方面是分步执行便于排查。
安装 WSL1:
首先按下组合键 Win + X
,选择 Windows PowerShell(管理员)
,打开一个控制台,并输入以下命令:
powershell
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
升级 WSL1 到 WSL2
WSL 2 运行要求
升级之前,需要先检查系统版本信息。
对于
x86
架构:发布版本 >= 1903;内部版本 >= 18362.1049
对于arm
架构:发布版本 >= 2004;内部版本 >= 19041
这一点和 Window10/11
的要求比较相似。
若不清楚体系架构,可以按下组合键 Win + X
,在菜单中找到 系统 选项,打开 关于系统 界面后可以找到当前系统的体系结构。
依然以管理员身份打开 PowerShell
控制台,输入以下命令并回车:
powershell
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
下载 WSL 内核安装包:
- 适用于
x86
架构:⇲WSL2 Linux 内核安装包 - 适用于
ARM
架构:⇲WSL2 Linux-ARM 内核安装包
下载后双击打开,自动安装即可。
提示
此处为微软官方提供的最旧版本的安装文件,这是官方为了确保 WSL 的兼容性安装。
建议安装以上内容后,确认无误后,再去微软的 WSL2 仓库下载最新的安装包再安装一遍。
下载带有 Latest
标签,最新的安装包即可。
- 微软WSL内核仓库: ⇲github-微软WSL内核仓库
特别说明
不要下载 Pre-Release
标签的安装包!!!
不要下载 Pre-Release
标签的安装包!!!
不要下载 Pre-Release
标签的安装包!!!
【可选操作】预设分发版本默认使用 WSL2
然后提前预设后续安装的 wsl 分发版本均为 WSL2
powershell
wsl --ser-default-version 2
至此,若未出现明显错误或异常,WSL2 的基础运行环境便布置完毕。
1.3.下载 Docker Desktop
提示
因为 Docker Desktop
实则为基于 hyper-V 和 Container 特性,并利用 wsl 直连底层,所以高版本的 Windows-Server
也是可以安装 Docker Desktop
的,这样可以极大程度减少 Docker 的安装流程。
下载地址:https://www.docker.com/products/docker-desktop/
在下载页面中,选择Windows版本下载

提示
下载结束后,按默认配置进行安装。安装完成后需要注销系统,重新登录。
注销重登录系统后,在PowerShell中执行下面的命令
bash
docker version
如果能够显示出docker的版本号,并且如下图红框所示为 linux
前缀,则表明为 Linux
内核,表明 Docker 安装成功。

更改安装位置和数据存放位置
Docker Desktop 默认安装位置在 C:\Program Files\Docker\
其他数据文件的主要存储位置为
%USERPROFILE%\AppData\Roaming\Docker
%USERPROFILE%\AppData\Local\Docker
若C盘空间紧张,可自行设置安装位置,以下为操作步骤:
- 打开上文下载的安装文件所在的目录
- 在资源管理器的
路径
这一栏输入powershell
后并回车,打开powershell
窗口。
也可以直接按下组合键
Win + X
,选择Windows PowerShell
打开powershell
窗口,然后使用cd
命令跳转到前文下载的安装文件所在的目录。
- 参考以下命令格式,更改内部的参数路径,然后复制到控制台中,并回车确认。
powershell
Start-Process 'Docker Desktop Installer.exe' -Wait -ArgumentList 'install', '--accept-license','--installation-dir=D:\ProgramFiles\Docker\core','--hyper-v-default-data-root=D:\ProgramFiles\Docker\hyper-v','--windows-containers-default-data-root=D:\ProgramFiles\Docker\window-container','--wsl-default-data-root=D:\ProgramFiles\Docker\wsl'
以上命令会将 Docker Desktop
安装到D盘下,具体路径为: D:\ProgramFiles\Docker\core
。并将 wsl
相关的容器文件存储到 D:\ProgramFiles\Docker\wsl
命令参数释义:
固定写法:Start-Process 'Docker Desktop Installer.exe' -Wait -ArgumentList 'install', '--accept-license'
指定目录的参数在后面用 半角单引号 包裹,参数之间使用 半角逗号隔开 ,其中:--installation-dir
指定安装路径--hyper-v-default-data-root
指定 hyper-v 模式时的数据存放位置--windows-containers-default-data-root
指定 Windows 容器的存放位置,--wsl-default-data-root
指定 wsl 模式时的数据存放位置。
更多安装可用的安装指令参数参考文档: ⇲Windows | Docker Docs
特别说明一
若在启动 Dockers Desktop
并出现下图所示警告:

说明 WSL内核
过于老旧,需要在控制台中执行 wsl --update
进行更新。
如果此处因为网络原因更新反复失败,则需要 手动 去微软WSL仓库下载最新的 内核安装包 ,执行安装和修复。
下载带有Latest
标签,最新的安装包即可。微软WSL内核仓库: ⇲github-微软WSL内核仓库
注意:不要下载Pre-release
标签的安装包
特别说明二-关于 Hype-V 模式运行的Docker
如果采用WSL模式成功运行Docker,则无需查看此特别说明!!!
如果采用WSL模式成功运行Docker,则无需查看此特别说明!!!
如果采用WSL模式成功运行Docker,则无需查看此特别说明!!!
如果因为 特殊情况 无法使用 WSL 模式作为Docker运行基础,而是采用 Hyper-V 作为运行基础,则需要手动调整容器的 最大资源限制 的大小。
- 它决定了单个容器可以分配到的最大资源。
若不调整,则后续使用可能会因为 默认资源分配过小 ,导致会众云平台的各项服务受损
此情况有可能进一步导致 数据受损 , 难以恢复 。
默认分配资源的设置方式:
- 打开 DockerDesktop 控制面板,点击 右上角齿轮 进入设置页
- 左侧菜单项点击: Resources ,然后进入 Advanced 选项卡
- 在各个 Limit控制条 下拖动,设置单容器可分配到的 最大资源 。
必须设置:
CPUs(核心数) >= 2
Memory(内存)>= 8GB
Disk(磁盘)>= 100GB
如下图示例:

2.运行主服务
2.1.创建配置文件
特别说明
注意:务必使用正确的json格式,并且检查文件路径及文件名是否正确,否则服务无法启动!
创建配置文件
在C盘
创建hzy
目录,然后在hzy
目录下创建conf
目录

在conf
目录下创建server_config.json
文件

然后使用文本编辑器
,编辑server_config.json
内容,内容说明如下
配置参数说明
bash
# 必填参数
ROOT_DOMAIN # 根地址(浏览器地址栏真实访问使用的根地址,http开头)
AUTH_SECRET # 服务秘钥,由会众云提供,每个私有化服务独有,无法重复使用
文件内容示例
特别说明
这里是示例参数!请替换为真实的参数,并检查JSON格式是否正确
这里是示例参数!请替换为真实的参数,并检查JSON格式是否正确
这里是示例参数!请替换为真实的参数,并检查JSON格式是否正确
json
{
"ROOT_DOMAIN": "http://192.168.31.153:2020",
"AUTH_SECRET": "xxxxxxxxxxxxxxxx"
}
2.2.创建文件保存路径
特别说明
以下目录必须创建,并且名字必须一致,否则无法启动服务
以下目录必须创建,并且名字必须一致,否则无法启动服务
以下目录必须创建,并且名字必须一致,否则无法启动服务
在hzy
目录下创建data
目录

在data
目录下创建以下目录
目录名 | 目录说明 |
---|---|
backup | 保存备份文件 |
excel | 保存excel文件 |
file | 保存系统下所有上传文件、图片 |
mongodb | 【重要】mongodb数据库文件(可以定时进行备份) |
redis | 【重要】redis数据库文件(可以定时进行备份) |

在mongodb
目录下创建以下目录(采用3实例副本集部署方式,提高数据安全性)
目录名 | 目录说明 |
---|---|
data1 | 数据库实例1的全量数据文件 |
data2 | 数据库实例2的全量数据文件 |
data3 | 数据库实例3的全量数据文件 |
log1 | 数据库实例1的日志文件 |
log2 | 数据库实例2的日志文件 |
log3 | 数据库实例3的日志文件 |

2.3.运行会众云平台
如果需要增加https访问,可以添加:https自动签发插件
运行主服务
点击查看所有已发布版本,并下载软件镜像(请下载内置数据库版本
)
powershell
# 注意:服务启动后默认映射端口2020,可以直接访问此端口,也可以配置nginx反向代理
# 注意:-v C:\hzy\conf:/root/conf C:\hzy\conf,是上面server_config.json所在目录
# 注意:-v C:\hzy\data:/root/upload C:\hzy\data,是上面backup、excel、file等所在目录
# 注意:hzy-release:db.x86.[版本号],查看已发布版本:https://hub.docker.com/r/hzy0code/hzy-release/tags
docker run --privileged -e TZ=Asia/Shanghai -itd --restart always -p 2020:2020 -p 20000:20000 -v C:\hzy\conf:/root/conf -v C:\hzy\data:/root/upload --name hzy-main registry.cn-hangzhou.aliyuncs.com/hzy0code/hzy-release:db.x86.[版本号]
提示
如果是在 wsl终端
与Docker交互,则应该键入此条shell:
shell
# 修改:将 C:\hzy\conf 替换为 /mnt/c/hzy/conf
# 修改:将 C:\hzy\data 替换为 /mnt/c/hzy/data
docker run --privileged -e TZ=Asia/Shanghai -itd --restart always -p 2020:2020 -p 20000:20000 -v /mnt/c/hzy/conf:/root/conf -v /mnt/c/hzy/data:/root/upload --name hzy-main registry.cn-hangzhou.aliyuncs.com/hzy0code/hzy-release:db.x86.[版本号]
提示
Window 下调整防火墙策略不会导致 Docker 容器失效,若操作了相关内容使容器失效,可以检查是否禁用了 Docker 应用的通行规则。
部署完成后,访问系统说明!!!必看!
部署完成后,访问系统说明!!!必看!
部署完成后,访问系统说明!!!必看!
部署完成后,系统的访问入口为:根域名
/apaas
示例:http://192.168.0.1:2020/apaas
部署完成后,系统的相关配置及操作:点击查看
2.4.升级会众云平台
特别说明
升级服务不会导致数据丢失,所有的数据都保存于本地磁盘中,docker容器中不保存任何数据
bash
# 查看正在运行的所有容器
docker ps
# 停止会众云容器服务
docker stop [容器id]
# 删除会众云容器服务
docker rm [容器id]
# 查看所有的镜像,并删除旧版本的会众云平台镜像(此步骤可以省略)
docker images
docker rmi [历史镜像id]
# 使用新的版本号,重新运行主服务
docker run --privileged -e TZ=Asia/Shanghai -itd --restart always -p 2020:2020 -p 20000:20000 -v C:\hzy\conf:/root/conf -v C:\hzy\data:/root/upload --name hzy-main registry.cn-hangzhou.aliyuncs.com/hzy0code/hzy-release:db.x86.[版本号]
2.4 Docker其他指令说明
此处提供一部分快速的 Docker 操作指令参考,以供快速查阅
作用 | 指令参考 |
---|---|
重启容器 / 重启会众云服务 | docker restart hzy-main |
停止容器 / 停止会众云服务 | docker stop hzy-main |
启动容器 / 启动会众云服务 | docker start hzy-main |
删除容器 / 删除会众云服务 | docker rm hzy-main |
3. 其他配置说明(非安装步骤)
特别说明
以下步骤不是安装流程,是额外配置说明,仅需要时才进行配置
以下步骤不是安装流程,是额外配置说明,仅需要时才进行配置
以下步骤不是安装流程,是额外配置说明,仅需要时才进行配置
3.1.nginx反向代理
提示
可以使用:自动证书-HTTPS,进行自动https证书签发、nginx代理、域名校验
3.2.docker-compose 配置
当需要使用docker-compose
对容器进行统一管理时,使用使用以下yml
配置
注意
image
为示例镜像名,需要替换为真实的镜像名
yml
version: '3'
services:
hzy-release:
image: hzy0code/hzy-release:db.x86.6.0.0
privileged: true
environment:
- TZ=Asia/Shanghai
restart: always
ports:
- 20000:20000
- 2020:2020
volumes:
- /etc/hzy:/root/conf
- /var/hzy:/root/upload
tty: true
3.3.配置数据库角色
当前版本内置的mongodb数据库不包含数据库角色,添加数据库角色的步骤如下
1. 进入容器内部
bash
# 查看当前容器ID
docker ps | grep hzy0code
# 进入容器内部
docker exec -it [容器id] /bin/bash
2. 连接数据库并创建角色
bash
# 连接数据库
source .bash_profile
mongosh --host apaas/localhost:17017,localhost:17018,localhost:17019
# 创建角色(默认user:hzy,默认pwd:0codepaas.com,可以修改)
# 注意:数据库角色必须创建!以下5个数据库都需要创建相同角色,以及使用相同的账号密码!
# 注意:数据库角色必须创建!以下5个数据库都需要创建相同角色,以及使用相同的账号密码!
# 注意:数据库角色必须创建!以下5个数据库都需要创建相同角色,以及使用相同的账号密码!
use admin
db.createUser({user: "hzy", pwd: "0codepaas.com", roles: ["root"]})
use data
db.createUser({user: "hzy", pwd: "0codepaas.com", roles: [{role: "dbOwner", db: "data"}]})
use main
db.createUser({user: "hzy", pwd: "0codepaas.com", roles: [{role: "dbOwner", db: "main"}]})
use app
db.createUser({user: "hzy", pwd: "0codepaas.com", roles: [{role: "dbOwner", db: "app"}]})
use common
db.createUser({user: "hzy", pwd: "0codepaas.com", roles: [{role: "dbOwner", db: "common"}]})
3. 启用mongodb安全策略
创建keyFile文件(副本集需要使用)
bash
cd /usr/local/mongodb/
openssl rand -base64 -out ./keyFile 756
chmod 400 ./keyFile # 必须限制文件权限为当前用户只读
修改:mongod1.conf、mongod2.conf、mongod3.conf,并启用以下配置
bash
#安全
security:
#【默认值: 无】如果是副本集,那么必须配置此值(openssl rand -base64 756 -out ./keyFile,chmod 400 ./keyFile)
keyFile: /usr/local/mongodb/keyFile
#【默认值: disabled】是否启用基于角色的访问控制(RBAC, role-based access control);enabled:启用
authorization: enabled
4. 重启mongodb实例
bash
# 查看所有mongodb实例
ps -ef | grep mongod
# 关闭所有实例
kill [进程ID]
# 重启mongodb进程
mongod -f /usr/local/mongodb/mongod1.conf
mongod -f /usr/local/mongodb/mongod2.conf
mongod -f /usr/local/mongodb/mongod3.conf
5. 重启服务
bash
# 修改 server_config.json 文件,并在最外层增加以下配置(需要替换:账号/密码、IP地址)
"DB_INSTANCE_URL": {
"00001": "mongodb://hzy:0codepaas.com@192.168.31.153:17017,192.168.31.153:17018,192.168.31.153:17019/?replicaSet=apaas"
}
# 修改完成后,重启docker服务
docker restart [容器id]
3.4. 连接mongoDB数据库
当需要连接数据库,并对数据库进行数据操作时,可以按以下步骤进行
特别说明
如果对mongoDB数据库不了解,请勿轻易连接数据库并执行操作,防止数据损坏!
为了数据安全,容器已增加安全策略禁止外部访问,取消策略一定会导致数据库被频繁攻击!
请您操作前做好数据备份,一旦出现问题需要自行承担!
请您操作前做好数据备份,一旦出现问题需要自行承担!
请您操作前做好数据备份,一旦出现问题需要自行承担!
注意:这里需要先获得独立数据库
授权,否则将授权失败无法访问
注意:这里需要先获得独立数据库
授权,否则将授权失败无法访问
注意:这里需要先获得独立数据库
授权,否则将授权失败无法访问
1. 使用host网络模式,重启docker服务
提示
默认的网络模式下,只会暴露指定端口。当需要连接数据库时,需要将网络模式改为host
删除docker服务

使用以下命令重启服务
bash
docker run --privileged -e TZ=Asia/Shanghai -itd --restart always --network=host -v /etc/hzy:/root/conf -v /var/hzy:/root/upload hzy0code/hzy-release:db.[平台架构].[版本号]
2. 修改mongodb集群模式
提示
默认mongodb集群不允许外部访问,如果需要外部访问需要在容器内连接数据库并修改集群
特别说明
如果将数据库暴露于公网上,几乎肯定会被攻击而导致所有数据丢失!请您明白以下操作的危险性
如果将数据库暴露于公网上,几乎肯定会被攻击而导致所有数据丢失!请您明白以下操作的危险性
如果将数据库暴露于公网上,几乎肯定会被攻击而导致所有数据丢失!请您明白以下操作的危险性
bash
# 进入容器内部并连接数据库
source .bash_profile
mongosh --host apaas/localhost:17017,localhost:17018,localhost:17019
# 将IP修改为真实的IP
config={_id:"apaas",members:[{_id:0,host:"IP:17017"},{_id:1,host:"IP:17018"},{_id:2,host:"IP:17019"}]}
rs.reconfig(config)
rs.status()
3. 连接数据库
数据库的连接地址为(需要替换为真实的IP地址):mongodb://IP:17017,IP:17018,IP:17019/?replicaSet=apaas
注意
如果设置过数据库的账号密码,则需要增加账号密码到连接地址上
例如:
mongodb://user:password@IP:17017,IP:17018,IP:17019/?replicaSet=apaas
4. 表单数据说明
连接数据库成功后,所有的数据都位于data
数据库,data
数据库中每一个应用都是一个单独的表,应用的数据都存在对应的表中
提示
例如,当应用的ID为arTQBeyM5o05S
,则保存应用数据的表单为form_row_arTQBeyM5o05S
应用ID可以通过地址栏获取(地址栏第一个ID就是应用ID)。示例:

表单用于保存应用数据,表单的数据结构如下
字段id | 字段名 | 字段类型 | 字段说明 |
---|---|---|---|
rowId | 记录id | 字符串 | 【必填】记录的唯一ID |
formId | 表单id | 字符串 | 【必填】当前记录归属于那张表单 |
isDevelop | 是否是测试环境 | 布尔 | 【必填】用于标记此记录是否属于测试环境 |
controlId | 控件ID | 字符串 | 控件的ID,保存的对应控件的值。例如:控件ID为BeyMarTQ5o05S ,控件值为"这里是控件值" ,则字段为"BeyMarTQ5o05S": "这里是控件值" |