业务系统使用geoserver处理场地地图信息,原服务器为CENTOS, geoserver版本也存在漏洞,因此考虑部署新服务器替代。
原服务器采用DOCKER环境运行geoserver 和 pgrouting容器。
新服务器geoserver采用二进制包安装,pgrouting则沿用DOCKER部署。
系统要求与前期准备
Ubuntu版本:24.04 LTS。
硬件配置 :4C/8G/300G 。
网络:能够访问互联网下载安装包。
权限:需要具有sudo权限的用户账户。
原服务器IP:192.168.0.40
新服务器IP: 192.168.0.60
一、geoserver安装部署
1. 安装Java环境
GeoServer是基于Java的应用程序,需要Java 11或Java 17运行环境。
更新软件包列表:
# apt-get update
安装OpenJDK 11
# apt-get install openjdk-11-jdk
验证Java安装:
#java -version
2. 下载GeoServer
从官网下载最新的稳定版GeoServer二进制分发版(Platform Independent Binary)。
进入安装目录 /opt,使用 wget 下载:
#cd /opt
#wget https://sourceforge.net/projects/geoserver/files/GeoServer/2.27.2/geoserver-2.27.2-bin.zip
解压下载的压缩包:
# unzip geoserver-2.27.2-bin.zip
3. 调整目录权限
为了让GeoServer能够写入其数据目录,调整目录权限:
# chmod -R a+rw /opt/geoserver
4. 启动GeoServer
进入GeoServer的启动脚本目录:
# cd /opt/geoserver/bin
使用启动脚本运行GeoServer:
#sh startup.sh
启用 nohup 命令可以使其在后台运行。
5. 验证安装
打开Web浏览器。
访问GeoServer的管理界面:
http://192.168.0.60:8080/geoserver
采用默认凭据登录:
用户名:admin
密码:geoserver
看到GeoServer的Web管理界面,说明安装成功。
6. geoserver数据迁移
在原服务器查看容器信息,确定数据目录
# docker ps
# docker inspect 24a265ab0c91
从容器中拷贝数据目录
# docker cp 24a265ab0c91:/opt/geoserver/data_dir /home
复制到新服务器
# scp -r data_dir zjgport@192.168.0.60:/home/zjgport/
在新服务器重启GeoServer服务后可看到原服务器数据,表明信息复制成功。
复制字库
在原服务器执行以下命令将需要的字体文件复制到新服务器
# cd /usr/share/fonts/dejavu/
# scp *.TTC zjgport@192.168.0.60:/home/zjgport
在新服务器将字体材料复制到字库文件夹
# cd /usr/share/dejavu
# cp /home/zjgport/*.TTC ./
7、安装为系统服务
安装为systemd服务可能方便地管理GeoServer的启动、停止以及设置开机自启
创建systemd服务记录:
# vi /etc/systemd/system/geoserver.service
添加以下内容
[Unit]
Description=GeoServer
After=network.target
[Service]
Type=simple
User=root
Group=root
# 必须设置的环境变量
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64"
Environment="GEOSERVER_HOME=/opt/geoserver"
# 可选:设置数据目录(如果不同于默认位置)
# Environment="GEOSERVER_DATA_DIR=/opt/geoserver/data_dir"
# 工作目录必须设置为GEOSERVER_HOME
WorkingDirectory=/opt/geoserver
# 直接执行启动脚本
ExecStart=/opt/geoserver/bin/startup.sh
# 停止部署
ExecStop=/bin/kill -TERM $MAINPID
SuccessExitStatus=143
TimeoutStopSec=30
Restart=on-failure
RestartSec=10
# 标准输出到systemd日志
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
重新加载并启动
# systemctl daemon-reload
# systemctl start geoserver.service
检查状态
# systemctl status geoserver.service
二、pgrouting数据库部署及数据迁移
1、docker环境部署
略
2生成pgrouting 镜像
在原服务器停止容器
# docker stop pgrouting
提交容器创建新镜像
# docker commit pgrouting my-pgrouting:latest
将镜像导出为文件
# docker save -o my-pgrouting.tar my-pgrouting:latest
在当前目录生成一个 my-pgrouting.tar 文件
3、导入镜像
传输镜像文件到新服务器
# scp my-pgrouting.tar zjgport@192.168.0.60:/home/zjgport
在新服务器上加载镜像
在新服务器上,使用 docker load 命令将传输过来的 tar 文件导入到本地 Docker 镜像列表中。
# docker load -i my-pgrouting.tar
导入成功后,采用 docker images 命令应该能看到 my-pgrouting 镜像。
4、复制数据
在原服务器查看容器信息,确定数据目录
docker ps
docker inspect 2ebe7c429341
确认材料存放路径
将该目录复制到新服务器
cd /var/lib/docker/volumes/3a35827ffaa58abbe22217204865ab052580814b1870c905683682c8664f7a07/
scp -r _data zjgport@192.168.0.60:/home/zjgport
5、在新服务器启动容器
docker run -d \
--name my-pgrouting \
-v /var/lib/postgresql/data:/var/lib/postgresql/data \
-p 5432:5432 \
-e POSTGRES_PASSWORD= postgresSzg@2025\
my-pgrouting:latest
6、调整设置
进入存储仓库页面,修改连接参数中host 的IP地址为192.168.0.60。
迁移成功。
浙公网安备 33010602011771号