nVisual 国产操作系统部署指南

本文档介绍在麒麟 Kylin V10 等国产信创系统上部署 nVisual 的完整流程,涵盖 ARM 架构x86_64 架构,以及 PostgreSQL 和 **人大金仓(KingbaseES)**两种数据库方案。


一、环境概览

组件 技术选型
操作系统 麒麟 Kylin Linux Advanced Server V10(ARM / x86_64)
数据库 PostgreSQL 13 + PostGIS + pgRouting 或 人大金仓 KingbaseES V8
Web 服务 Nginx(1.18+)
Java 环境 JDK 8
消息队列 RabbitMQ 3.8+(可选)

二、麒麟 V10 ARM 架构部署(源码编译)

2.1 安装编译依赖

yum install -y bzip* perl-ExtUtils-Embed flex bison readline-devel \
  zlib-devel openssl-devel pam-devel libxml2-devel libxslt-devel \
  openldap-devel python-devel gcc-c++ libssh2-devel cmake sqlite-devel git

离线环境可用 yum install --downloadonly 提前下载 rpm 包后上传安装。

2.2 编译安装 PostgreSQL 13

tar xvf postgresql-13.1.tar.bz2
cd postgresql-13.1
./configure --prefix=/opt/pgsql
gmake && gmake install

2.3 编译安装 PostGIS 依赖

按顺序编译安装:GEOS → PROJ → libxml2 → json-c → GDAL → protobuf → protobuf-c → PostGIS

各组件编译示例:

# GEOS
tar xvf geos-3.8.0.tar.bz2 && cd geos-3.8.0
./configure --prefix=/opt/geos-3.8.0 --enable-python
make && make install

# PROJ
tar xvf proj-6.2.1.tar.gz && cd proj-6.2.1
./configure --prefix=/opt/proj-6.2.1
make && make install

# GDAL
tar xvf gdal-3.3.3.tar.gz && cd gdal-3.3.3
./configure --prefix=/opt/gdal-3.3.3 --with-proj=/opt/proj-6.2.1 --with-libjson-c=/opt/json-c
make clean && make -j && make install

# protobuf
tar xvf protobuf-all-3.6.1.tar.gz && cd protobuf-3.6.1
./configure --prefix=/opt/protobuf-3.6.1
make && make install

# protobuf-c
tar xvf protobuf-c-1.4.0.tar.gz && cd protobuf-c-1.4.0
export PKG_CONFIG_PATH=/opt/protobuf-3.6.1/lib/pkgconfig
./configure --prefix=/opt/protobuf-c-1.4.0
make && make install

# PostGIS
tar xvf postgis-3.1.6.tar.gz && cd postgis-3.1.6
./configure --prefix=/opt/postgis \
  --with-gdalconfig=/opt/gdal-3.3.3/bin/gdal-config \
  --with-pgconfig=/opt/pgsql/bin/pg_config \
  --with-geosconfig=/opt/geos-3.8.0/bin/geos-config \
  --with-projdir=/opt/proj-6.2.1 \
  --with-xml2config=/opt/libxml2-2.9.1/bin/xml2-config \
  --with-jsondir=/opt/json-c \
  --with-protobufdir=/opt/protobuf-c-1.4.0
make && make install

2.4 编译安装 pgRouting

先安装 CGAL 和 BOOST:

# CGAL
tar xvf v5.5.1.tar.gz && cd cgal-5.5.1
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/cgal-5.5.1 ..
make && make install

# BOOST
tar xvf boost_1_81_0.tar.gz && cd boost_1_81_0
./bootstrap.sh && ./b2 && ./b2 install

# pgRouting
tar xvf pgrouting-3.4.2.tar.gz && cd pgrouting-3.4.2
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/pgrouting-3.4.2 ..
make && make install

2.5 初始化与启动数据库

groupadd postgres && useradd postgres
mkdir /opt/pgsql/data && chown postgres:postgres /opt/pgsql/data
su - postgres
/opt/pgsql/bin/initdb -D /opt/pgsql/data
/opt/pgsql/bin/pg_ctl start -D /opt/pgsql/data

修改配置文件允许远程连接:

  • pg_hba.conf:添加 host all all 0.0.0.0/0 trust
  • postgresql.conf:设置 listen_addresses = '*'

配置动态库路径:

vim /etc/ld.so.conf  # 添加 /opt/pgsql/lib、/opt/geos-3.8.0/lib 等路径
ldconfig

2.6 启用插件

CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
CREATE EXTENSION pgrouting;

2.7 安装 Nginx

麒麟镜像内置 Nginx rpm 包,直接安装:

cd nginx && rpm -ivh *.rpm
systemctl enable --now nginx.service

创建前端目录并解压 dist 包:

mkdir -p /home/nvisual-frontend/dist
tar xvf dist*.tar.gz -C /home/nvisual-frontend/dist

2.8 安装 RabbitMQ(可选)

rpm -ivh erlang*.rpm
rpm -ivh socat*.rpm
rpm -ivh rabbitmq-server*.rpm
systemctl enable --now rabbitmq-server.service
rabbitmq-plugins enable rabbitmq_management

2.9 安装 JDK 并启动后端

tar xvf jdk-8u321-linux-aarch64.tar.gz
cp -r jdk1.8.0_321 /usr/local/
# 配置 /etc/profile 添加 JAVA_HOME 等环境变量
source /etc/profile

# 启动 jar 包
nohup java -Dfile.encoding=utf-8 -jar nvisual*.jar &

三、麒麟 V10 SP3 x86_64 部署(较新版本)

3.1 挂载本地 Yum 源

mkdir -p /opt/iso
mount -o loop /opt/Kylin-iso/*.iso /opt/iso

cat > /etc/yum.repos.d/kylin-local.repo << EOF
[kylin-local]
name=Kylin Local Repository
baseurl=file:///opt/iso
enabled=1
gpgcheck=0
EOF

yum clean all && yum makecache

3.2 安装 JDK

yum -y install java-1.8.0-openjdk
java -version

3.3 安装 Nginx(源码编译)

yum install -y gcc make pcre pcre-devel zlib zlib-devel openssl openssl-devel

tar xvf nginx-1.28.0.tar.gz && cd nginx-1.28.0
./configure --prefix=/usr/local/nginx --sbin-path=/usr/sbin/nginx \
  --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx.pid \
  --with-http_ssl_module --with-http_v2_module --with-threads --with-http_realip_module
make && make install

注册 systemd 服务并启动:

cat > /etc/systemd/system/nginx.service << 'EOF'
[Unit]
Description=nginx - high performance web server
After=network.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/usr/sbin/nginx -s quit
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

systemctl enable --now nginx

3.4 编译安装 PostgreSQL 13.22

yum install -y readline-devel zlib-devel flex bison openssl-devel \
  libxml2-devel libxslt-devel pam-devel perl-devel systemd-devel

tar xvf postgresql-13.22.tar.gz && cd postgresql-13.22
./configure --prefix=/usr/local/pgsql-13 --with-openssl \
  --with-libxml --with-libxslt --with-pam --with-systemd
make -j $(nproc) && make install

# 安装 contrib 插件
cd contrib && make && make install

初始化数据库:

useradd -m -U postgres && passwd postgres
mkdir -p /usr/local/pgsql-13/data
chown postgres:postgres /usr/local/pgsql-13/data
su - postgres
/usr/local/pgsql-13/bin/initdb -D /usr/local/pgsql-13/data --locale=en_US.UTF-8

注册 systemd 服务并启动。

3.5 编译安装 PostGIS 3.6.0(较新版本)

依赖编译(使用 cmake 构建):

# GEOS 3.14.0
mkdir build && cd build && cmake .. && make && make install

# PROJ
mkdir build && cd build && cmake .. && make && make install

# GDAL 3.8.4
mkdir build && cd build && cmake .. && make && make install

# protobuf → protobuf-c → postgis

创建库符号链接并启用插件。

3.6 数据库优化

访问 https://pgtune.leopard.in.ua,根据服务器配置获取优化参数,写入 postgresql.conf 后重启数据库。


四、人大金仓 KingbaseES V8 数据库(国产替代)

4.1 硬件与系统要求

项目 要求
CPU X86、龙芯、飞腾、鲲鹏
操作系统 麒麟 V10、统信 UOS、中标麒麟、中科方德等
内存 512MB 以上
硬盘 10GB 以上空闲,/tmp 至少 10G

4.2 内核参数配置

编辑 /etc/sysctl.conf,添加:

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500

4.3 安装步骤

# 创建安装用户
useradd -m kingbase && passwd kingbase

# 挂载 ISO
mount KingbaseES_*.iso ./KingbaseESV8

# 图形化安装
sh setup.sh -i swing

# 或命令行安装
sh setup.sh -i console

关键参数:端口 54321,账户 system,字符集 UTF8,兼容模式 ORACLE

4.4 启用 PostGIS 与 pgRouting 扩展

联系金仓技术人员获取对应补丁包,将 bin/lib/share/extension/ 目录文件拷贝到数据库安装目录对应位置后执行:

CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
CREATE EXTENSION pgrouting;

验证安装:

SELECT PostGIS_full_version();
SELECT pgr_version();

-- 验证 MVT 功能
WITH mvtgeom AS (SELECT ST_TileEnvelope(12,513,412) AS geom)
SELECT ST_AsMVT(mvtgeom.*) FROM mvtgeom;

五、部署 nVisual 软件

5.1 前端部署

mkdir -p /home/nvisual-frontend/dist
tar xvf dist*.tar.gz -C /home/nvisual-frontend/dist
# 模型库图片包解压至 dist/img/nvisual/ 下

配置 Nginx 指向该目录,重启 Nginx。

5.2 后端部署

mkdir /home/nvisual-backend
# 上传 jar 包
cd /home/nvisual-backend
# 修改 application.properties 中数据库连接信息
nohup java -Dfile.encoding=utf-8 -jar nvisual*.jar &

5.3 关闭防火墙与 SELinux

systemctl disable firewalld.service
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

六、常见问题

问题 解决方案
PostGIS 插件加载报错缺少 .so 文件 将编译安装的库路径写入 /etc/ld.so.conf 并执行 ldconfig
GDAL 编译报 PNG_ARM_NEON_OPT 错误 pngpriv.h#ifndef PNG_ARM_NEON_OPT 上方添加 #define PNG_ARM_NEON_OPT 0
PostGIS 编译报 protobuf-c 版本过低 修改 configure 文件,插入 PROTOC_VERSION="libprotoc 3.6.1"
人大金仓 MVT 返回空 联系金仓技术人员获取正确的 PostGIS 补丁包

📄 参考来源:

  • docs/nvisual/麒麟V10ARM架构编译安装与部署nVisual.md
  • docs/nvisual/基于国产信创系统部署运行环境.md
  • docs/nvisual/人大金仓数据库部署文档.md
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐