使用脚本部署系统
注意:
目前使用脚本方式部署通过测试支持的操作系统包括:Ubuntu 20.04/21.04/24.04、Kylin Server V10。
若需在其他操作系统中部署 Mapmost Studio,请咨询客服,或使用手动方式部署。
1.1 准备工作
1.1.1 准备服务器
根据配置推荐及部署架构说明准备服务器,且需提供具有 root 权限的用户(root 用户,或可通过 sudo 命令提升到 root 权限的普通用户)。
强烈建议使用安装操作系统后未安装其他任何软件的干净服务器环境部署 Mapmost Studio 系统!!!
以避免部署或使用过程中出现各种无法预期的异常问题。
若无干净服务器环境,建议使用手动方式部署系统!
1.1.2 获取部署包及部署脚本
Mapmost Studio 部署包及部署脚本可联系客服获取。
部署脚本与部署包均为 tgz
压缩包形式,脚本命名为 system-deployment_<version>.tgz
,如 system-deployment_latest.tgz
。
部署包分为最小功能包及插件包:
- 最小功能包
命名形式为 mapmost-studio_<version>_<arch>_minimal_<time>.tgz
,如 mapmost-studio_v9.2.0_amd64_minimal_20240813.tgz
。
最小功能包仅包含地图服务发布核心功能,不包含影像、三维模型等模型发布功能。最小功能包可独立部署。其结构示例如下:
mapmost-studio_v9.2.0_amd64_minimal_20240813/
├── data # 存放各服务及中间件的数据及配置文件
│ ├── mysql
│ ├── openresty
│ ├── postgresql
│ ├── redis
│ └── service # 存放 vector-map 后端应用相关配置文件
├── docker-packages # 存放 Docker 服务安装包及配置文件
├── images # 存放各服务及中间件的镜像打包文件
│ ├── middleware
│ │ ├── minio-RELEASE.2021-06-17T00-10-46Z.tar
│ │ └── ...
│ ├── service
│ │ ├── modeldeployment-manager
│ │ ├── vector-map
│ │ ├── cloud-minio-upload-2024-07-23T10-09-41.tar
│ │ └── studio-core-master-v9.2.0-rc5.tar
│ └── mapmost-studio-vector-map-24.tar
├── nfs-server-packages # 存放 NFS 服务安装包
├── docker-compose.yaml.example # docker compose 配置示例文件
├── docker-compose.yaml.j2 # docker compose 配置模版文件
├── 更新记录.md
└── 系统部署.md
- 插件包
命名形式为 mapmost-studio_<version>_<arch>_plugin_<time>.tgz
,如 mapmost-studio_v9.2.0_amd64_plugin_20240809.tgz
。
插件包仅包含发布模型服务所需的工具镜像,及预览影像数据文件。插件包不可独立部署,必须与最小功能包同时部署,或在已部署最小功能包后作为补充包部署。其结构示例如下:
mapmost-studio_v9.2.0_amd64_minimal_20240813/
├── data # 存放各服务及中间件的数据及配置文件
│ └── openresty
│ └── html
│ └── map.tgz
├── images # 存放各服务及中间件的镜像打包文件
│ └── service
│ └── modeldeployment-manager
│ ├── dem-quantizedmesh-amd64.2024-06-26T14-18-31.tar
│ ├── imagetiler-amd64.2024-06-26T14-20-48.tar
│ └── ...
└── 更新记录.md
注意:
仅使用 Mapmost Studio 系统核心地图发布功能时,可只获取最小功能包;若希望使用 Mapmost Studio 系统全部功能,需同时获取最小功能包及插件包。
1.2 上传部署包及部署脚本
- 将部署包及部署脚本上传至服务器,如上传至
/usr/local/src
目录:
# 切换至上传路径
cd /usr/local/src
# 可使用 rz 命令或其他任意方式上传部署包
rz
注意:
- 多节点部署时,上传至其中任一台服务器即可;
- 仅部署平台核心地图发布功能时,上传最小功能包及部署脚本;部署平台全量功能时,需上传最小功能包、插件包及部署脚本;
- 上传路径应避免包含中文字符、空格及其他特殊字符,建议使用
/usr/local/src
目录;- 部署包及部署脚本压缩包应上传至同一目录。
- 解压部署脚本压缩包:
# 切换至部署包及部署脚本所在目录
cd /usr/local/src
# 解压部署脚本压缩包
tar -zxvf system-deployment_latest.tgz
1.3 修改脚本配置信息
切换至脚本目录:
cd system-deployment
该脚本基于 Ansible,可实现 Maompost Studio 系统单/多节点的自动化部署。
1.3.1 配置服务器连接信息
编辑脚本根目录中的 ./hosts
主机资产清单文件:
vim ./hosts
该配置文件用于定义主机的 SSH 连接信息,即部署系统的目标服务器信息,包括服务器的 IP 地址、用户名、密码等。
仅需修改配置文件最下方 [Server]
配置块内容,参照配置文件中已提供的配置示例,添加部署 Mapmost Studio 系统的目标服务器连接信息,如:
...
[Server]
node-61 ansible_ssh_host=191.168.17.61 ansible_user=root ansible_ssh_pass=Ymg*tz9,Z!4,Sny
其中:
node-61
为主机节点名称,不可重复;ansible_ssh_host
指定 SSH 连接时使用的主机 IP 地址;ansible_user
指定用于 SSH 连接的用户名;ansible_ssh_pass
指定用于 SSH 连接的密码。
也可使用私钥连接服务器,如:
...
[Server]
test-21 ansible_ssh_host=191.168.17.21 ansible_user=root ansible_ssh_private_key_file=/etc/ansible/ssh-key/191.168.17.21-rsa
需先在脚本根目录中创建 ssh-key
目录,并将私钥文件上传至改目录。然后修改上述 ansible_ssh_private_key_file
参数后的私钥文件名即可(无需调整路径 /etc/ansible/ssh-key/
配置)。
注意:
- 多节点部署时需添加每一台服务器的连接信息;
ansible_user
参数指定的连接用户需为root
用户,或可通过 sudo 命令提升到 root 权限的普通用户;ansible_ssh_private_key_file
参数指定的私钥路径为后续执行脚本后容器内的挂载路径,非服务器上的实际路径。参数中的/etc/ansible/ssh-key/
对应服务器脚本根目录的./ssh-key/
,故当私钥文件在服务器上的位置为脚本根目录下的./ssh-key/rsa-key
时,参数路径应配置为/etc/ansible/ssh-key/rsa-key
。
1.3.2 修改系统部署信息
编辑脚本根目录中的 ./config.yaml
部署信息配置文件:
vim ./config.yaml
该配置文件用于定义系统部署的配置细节,如定义各个服务的部署节点、数据库的用户名密码等。
内网部署,且无特殊情况下,仅需根据实际情况,修改各服务部署节点配置,示例如下:
...
mapmost_studio:
...
docker:
...
### Docker 服务部署节点,所有节点均需部署
node: ["191.168.17.61", "191.168.17.41", "191.168.17.21"]
...
mysql:
...
### MySQL 服务部署节点
node: ["191.168.17.61"]
...
backend:
...
### 后端服务部署节点,多计算节点部署时,第一个元素为主节点,其余元素为计算节点
node: ["191.168.17.41", "191.168.17.21"]
其他需要关注的配置项包括:
- 系统部署目录及 Docker 服务数据目录
control_node:
docker:
...
### 控制节点(执行部署脚本的服务器节点)Docker 服务数据存储目录,建议选择空间较大的磁盘分区
data_dir: "/data/docker"
mapmost_studio:
## 系统部署目录,建议选择空间较大的磁盘分区
deploy_dir: "/data/project"
...
docker:
### 其他节点 Docker 服务数据存储目录,建议选择空间较大的磁盘分区
data_dir: "/data/docker"
...
建议修改,避免系统在后续使用中,由于发布的服务逐渐增多导致磁盘使用完全的情况发生。
- 系统访问方式配置
...
mapmost_studio:
...
## 是否通过公网 ip 访问系统
## 注意与下述 public_access_https 参数最多只有一个可以配置为 true
public_access: false
## 公网访问 ip
## 仅上述 public_access 参数配置为 true 时使用
public_access_ip: "58.210.111.196"
## 是否通过公网 https 域名访问系统
## 注意与上述 public_access 参数最多只有一个可以配置为 true
public_access_https: false
## 公网 https 访问域名
## 仅上述 public_access_https 参数配置为 true 时使用
public_access_https_host: "studio.lalala.com"
Mapmost Studio 平台目前支持三种访问方式:内网访问、公网 ip 访问、公网 https 域名访问。需根据实际情况选择访问方式并调整上述配置:
- 内网访问时无需修改;
- 公网 ip 访问时修改 `public_access` 参数为 `true` 并修改 `public_access_ip` 为实际公网 ip;
- 公网 https 域名访问时修改 `public_access_https` 为 `true` 并修改 `public_access_https_host` 为实际公网域名。
注意:
对于公网 https 域名访问,部署脚本暂未支持在 OpenResty 中自动添加 SSL 相关配置。
故在脚本执行完成后,需手动上传域名证书文件至 OpenResty 配置目录
/data/project/mapmost-studio/openresty/conf.d/
,并在 OpenResty 配置文件中添加 SSL 相关配置,参考示例如下:
server {
listen 443 ssl;
server_name studio.lalala.com;
ssl_certificate conf.d/studio.lalala.com.pem;
ssl_certificate_key conf.d/studio.lalala.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!3DES:!ADH:!RC4:!DH:!DHE;
ssl_prefer_server_ciphers on;
...
}
然后使用
docker restart mapmost-studio-openresty
命令重启 OpenResty 服务,使配置生效。
- 各服务端口配置及容器默认网段
...
mapmost_studio:
...
docker:
...
### 容器默认网段
bip: "191.168.200.1/24"
...
mysql:
### MySQL 服务端口号
port: 3306
...
当服务器非干净服务器,其上已运行其他业务应用时,建议在执行部署脚本前检查配置文件中各服务的默认端口是否存在冲突的情况。同时还应检查容器默认网段与服务器网段是否冲突。
注意:
配置文件中针对每个参数项都有详细的说明注释,建议部署前把每个参数的说明都看一下。
1.4 执行脚本
需使用 root 用户,或使用可通过 sudo 命令提升到 root 权限的普通用户执行脚本。
- 使用 root 用户,在脚本工程根目录下执行下述命令运行脚本:
./systemctl-deploy.sh -n 'mapmost-studio'
- 若使用普通用户,在脚本工程根目录下执行下述命令运行脚本:
sudo ./systemctl-deploy.sh -n 'mapmost-studio'
等待脚本运行完毕,运行结果示例如下:
...
PLAY RECAP *******************************************************************************************************
test-61 : ok=119 changed=48 unreachable=0 failed=0 skipped=29 rescued=0 ignored=7
上述主机执行结果统计中,failed
为 0
则表示脚本执行成功。
切换至系统目录:
cd /data/project/mapmost-studio
其中 /data/project
为配置文件 config-studio.yaml
中 mapmost_studio.deploy_dir
参数指定的部署目录。
检查 Mapmost Studio 系统容器是否运行正常:
docker compose ps -a --format "table {{.Name}}\t{{.RunningFor}}\t{{.Status}}"
命令结果示例如下:
NAME CREATED STATUS
cloud-minio-upload 28 minutes ago Up 28 minutes
mapmost-studio-minio 34 minutes ago Up 34 minutes
mapmost-studio-mysql 34 minutes ago Up 34 minutes
mapmost-studio-openresty 33 minutes ago Up 33 minutes
mapmost-studio-postgresql 32 minutes ago Up 32 minutes
mapmost-studio-redis 34 minutes ago Up 34 minutes
mapmost-studio-vector-map 28 minutes ago Up 28 minutes
modeldeployment-manager 28 minutes ago Up 28 minutes
studio-core-master 28 minutes ago Up 28 minutes
所有容器状态均为 Up 表示运行正常。