Linux系统下搭建GoeServer+PostGIS的地图服务发布体系

背景

虽然目前使用ArcGIS Server发布地图服务既方便又好用,而且公司开发人员也熟悉这个,能避免很多麻烦,但是数字政府的相关项目总是要求使用国产化或者开源的产品。这中间就会存在风险和隐患,没人较真还好,万一有人给你抬杠还真是麻烦大了。所以为保险起见,我就开始找ArcGIS的替代品,于是便想起了GeoServer。之前搞过windows环境的Geoserver,效果还不错,但项目上申请服务器资源都是有限制的而且很抠门,因此还是尽量不要为了发布地图服务而单独申请一台Windows服务器。于是想尝试能不能把GeoServer也搞到Linux环境。

方案

系统环境为Linux,GeoServer部署在Tomcat下,而PostGIS数据库部署在dockers当中。(之前想过把GeoServer也搞到dockers下的,但是没成功。)

GeoServer部署

Java环境部署

GeoServer是基于java开发的,所以无论是Windows还是Linux都需要java环境(dockers下的不清楚需不需要)。
jdk,我用的是jdk8u281这个版本:
在这里插入图片描述
大家也可以到oracle官网下载或者去华为云下载:https://repo.huaweicloud.com/java/jdk/

先把jdk放到Linux系统下(winscp,xftp都行),然后再把jdk解压到/usr/local/java下

// 没有这个文件夹就先建一个
mkdir /usr/local/java
//然后解压到该文件夹
tar -zxvf jdk-8u281-linux-x64.tar.gz -C /usr/local/java/

然后添加环境变量:

//打开环境配置文件
vi /etc/ profile
//在最后加入以下内容
#set java environment
JAVA_HOME=/usr/local/java/jdk1.8.0_281/
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

保存修改并退出,然后更新配置

source /etc/profile

测试jdk是否部署成功:

java -version

看到如下信息即表示JDK装好了:
在这里插入图片描述

Tomcat部署

首先到官网下载:http://tomcat.apache.org/download-80.cgi
本文用的版本:
在这里插入图片描述
利用工具将安装包传输到Linux中,然后解压到/usr/local下:

//然后解压到该文件夹
tar -zxvf apache-tomcat-8.5.84.tar.gz -C /usr/local/
//修改tomcat文件夹的名称,这步可以不做。这里修改只是为了后面配置环境变量时路径名成能短些。
mv /usr/local/apache-tomcat-8.5.84 /usr/local/tomcat

然后添加如下环境变量(打开环境变量的配置文件参考jdk安装)

#set tomcat enviroment

export CATALINA_HOME=/usr/local/tomcat

export CLASSPATH=.:$JAVA_HOME/lib:$CATALINA_HOME/lib

export PATH=$PATH:$CATALINA_HOME/bin

保存修改并退出,然后更新配置(参考jdk安装)
进入toncat的bin目录:

cd /usr/local/tomcat/bin

启动tomcat:

./startup.sh
//另外若要重启tomcat,则可先关闭再启动,关闭命令如下
./shutdown.sh

在浏览器地址栏输入“ip:8080"即可访问tomcat页面,若能访问则表示安装成功:
在这里插入图片描述
若连接不上一般是端口没开或8080端口已经被别的程序用了。对于端口没开,可以利用如下命令打开:

firewall-cmd --zone=public --add-port=8080/tcp --permanent && firewall-cmd --reload && firewall-cmd --list-ports

对于8080端口被占用,可以修改tomcat的配置文件:

vi /usr/local/tomcat/conf/server.xml

修改这两处的端口号即可(有的帖子说只修改上面的那个端口号就行,但为了保险起见,我都改了)
在这里插入图片描述
然后保存修改,再用”ip:新端口号“访问即可。

GeoServer部署

可以到该网站下载:https://sourceforge.net/projects/geoserver/files/GeoServer/2.17.5/
注意一定要下载war包,如果想要旧版本的可以点击上方目录中的GeoServer字样,退回上级目录,找到自己想要的版本。
在这里插入图片描述
下载好后把文件解压出来,将war后缀的文件放到tomcat目录的webapps文件夹下即可。下图中的geoserver是重启tomcat后自动生成的,所以不要手动创建。(不放心可以把压缩包中的其他文件或文件夹也一起放到该目录下。)
在这里插入图片描述
重启tomcat即可:

systemctl restart tomcat

然后访问:ip:6060/geoserver 即可。(tomcat下的geoserver端口无需另外指定,直接用tomcat的即可。)

在这里插入图片描述

Postgis数据库部署

目前在国内网络的帖子上一共找到两种dockers的镜像:一是postgis/postgis,二是kartoza/postgis。第一种我安装失败了,装完测试连接成功但打开数据库报错,最后是安装的第二种。(顺便一提kartoza/geoserver是dockers版本的Geoserver,但这个我安装完访问不了。我看整个镜像大小为1.4G左右,应该是包含了依赖环境的,毕竟前面tomcat版的才100多M,所以具体是啥原因没搞成也不得而知。)
假如你的服务器能联网,直接用以下命令即可下载dockers镜像:

//这样子表示安装9.6的postgresql和2.4的postgis,后者算是前者的一个插件,具体知识可以网上搜索postgis,看看科普就知道了。
//根据网上其他帖子的说法我们还可以用:11.0-2.5、10.0-2.4
docker pull kartoza/postgis:9.6-2.4

利用docker images命令查看下载好的镜像
在这里插入图片描述
假如服务器不能联网,那么先在能联网的服务器上下载好镜像,然后将镜像导出,用如下命令:

//格式:docker save <repository>:<tag> -o 自定义文件名.tar
docker save kartoza/postgis:9.6-24 -o postgis.tar

导出文件如下:
在这里插入图片描述
把tar包拷到你的目标服务器,用如下命令载入即可:

docker load -i postgis.tar

获得镜像后,是进行安装,docker安装很简单,只需要一个命令即可:

//   -name:是安装后的容器名,可自定义
//  POSTGRES_USER,超管用户名一般是postgres
//  POSTGRES_PASSWORD,超管密码,自定义
//  ALLOW_IP_RANGE ,这个有啥用不太理解,猜测是允许远程连接的IP范围?
//  -p 使用的端口号,前面是映射端口号,后面是postgis原始配置的端口号,默认都是5432
//  /opt/postgres_data/data:/var/lib/postgresql/data,表示将postgis在docker内部的数据文件夹路径:/var/lib/postgresql/data,映射到服务器上的/opt/postgres_data/data路径下(后者可自定义,不过得先创建该文件夹)。
//  kartoza/postgis:9.6-2.4就是你要安装的镜像名称
docker run -t --name postgresql --restart always  -e POSTGRES_USER='postgres' -e POSTGRES_PASSWORD=12345 -e ALLOW_IP_RANGE=0.0.0.0/0 -p 5432:5432 -v /opt/postgres_data/data:/var/lib/postgresql/data -d kartoza/postgis:9.6-2.4

安装好后记得打开5432端口,不然从外部访问不到数据库:

firewall-cmd --zone=public --add-port=5432/tcp --permanent && firewall-cmd --reload && firewall-cmd --list-ports

查看已安装好的postgis:

docker ps -a

结果:
在这里插入图片描述
然后可以利用navicat或者pgadmin4连接一下,能连上并打开数据库,然后执行sql也没问题则表示安装成功。
在这里插入图片描述

在这里插入图片描述
顺便提一句,刚才我安装的是postgresql 9.6和postgis 2.4,经测试用postgresql 10的客户端,也就是pgAdmin 4也是可以连上的,而且用 10对应的postgis的数据导入工具是可以成功将shp文件导入到9.6的库的,栅格文件没有测试过,但大概率是可以的。总结来说就是:postgresql 10的客户端及其对应的空间数据导入工具是可以兼容旧版本数据库的。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值