centos7 postgresql9和postgis2.1插件编译部署

目录

依赖安装

下载编译libgeos

下载编译proj4

编译Postgresql9

编译PostGIS2

启动postgresql服务

开通外部网络访问

数据库开启PostGIS扩展

查看PostGIS版本

升级PostGIS版本


依赖安装

这个命令里面安装的包可能会多,由于是编译GreenPlum用的,没有尝试最小安装

yum install -y epel-release

yum install -y \

apr-devel \

bison \

bzip2-devel \

cmake3 \

flex \

gcc \

gcc-c++ \

krb5-devel \

libcurl-devel \

libevent-devel \

libkadm5 \

libyaml-devel \

libxml2-devel \

libzstd-devel \

openssl-devel \

perl-ExtUtils-Embed \

python-devel \

python-pip \

readline-devel \

xerces-c-devel \

zlib-devel

 

yum install -y gdal-devel

 

yum install -y gdal-devel

下载编译libgeos

yum install -y wget

wget http://download.osgeo.org/geos/geos-3.8.0.tar.bz2

yum install -y bzip2

tar jxf geos-3.8.0.tar.bz2

#编译

./configure -prefix=/usr/local/geos && make && make install

 

下载编译proj4

 

wget http://download.osgeo.org/proj/proj-4.9.3.tar.gz #http://download.osgeo.org/proj/proj-6.2.1.tar.gz 注意项目需要的是4.x,其他版本不可用

tar zxf proj-4.9.3.tar.gz

cd proj-4.9.3

 

yum install -y libsqlite3x-devel

./configure -prefix=/usr/local/proj4 && make && make install

编译Postgresql9

#wget http://ftp.postgresql.org/pub/source/v9.6.9/postgresql-9.6.9.tar.gz

wget http://ftp.postgresql.org/pub/source/v9.6.9/postgresql-9.6.9.tar.bz2

tar jxvf postgresql-9.6.9.tar.bz2

cd postgresql-9.6.9

./configure -prefix=/usr/local/pgsql

make && make install

编译PostGIS2

#wget https://download.osgeo.org/postgis/source/postgis-2.2.8.tar.gz

wget https://download.osgeo.org/postgis/source/postgis-2.1.5.tar.gz

tar zxf postgis-2.1.5.tar.gz

cd postgis-2.1.5

./configure --with-pgconfig=/usr/local/pgsql/bin/pg_config --with-projdir=/usr/local/proj4

make

 

make报错

lwgeom_accum.c:109:46: error: ‘AggState {aka struct AggState}’ has no member named ‘aggcontext’; did you mean ‘aggcontexts’?

aggcontext = ((AggState *) fcinfo->context)->aggcontext;

 

搜索了好久才找到(http://osgeo-org.1560.x6.nabble.com/2-0-7-build-error-on-Fedora-22-td5214694.html)

vi postgis/lwgeom_accum.c

修改(参照https://trac.osgeo.org/postgis/browser/branches/2.1/postgis/lwgeom_accum.c)

108行附近

if (fcinfo->context && IsA(fcinfo->context, AggState))

   aggcontext = ((AggState *) fcinfo->context)->aggcontext;

else if (fcinfo->context && IsA(fcinfo->context, WindowAggState))

   aggcontext = ((WindowAggState *) fcinfo->context)->aggcontext;

else

改为

if ( ! AggCheckCallContext(fcinfo, &aggcontext) )

然后编译就通过了

看来是发包之后有人修复了这个bug……

 

#安装

make install

 

启动postgresql服务

adduser postgres

mkdir /usr/local/pgsql/data

chown postgres /usr/local/pgsql/data

su - postgres

#初始化数据库

/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

#启动服务

/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 &

#创建test库

/usr/local/pgsql/bin/createdb test

#psql登录到test库测试

/usr/local/pgsql/bin/psql test

#查看进程

ps -ef|grep postgres

 

开通外部网络访问

(默认绑定127.0.0.1仅能本机访问)

#开通防火墙

firewall-cmd --zone=public --add-port=5432/tcp --permanent

firewall-cmd --reload

#修改配置

cd /usr/local/pgsql/data

vi postgresql.conf

修改

listen_addresses = '0.0.0.0'

max_connections = 1000

 

#信任远程连接

vi pg_hba.conf

修改

host    all            all      0.0.0.0/0  md5

 

 

重启数据库

#设置postgres用户的密码

/usr/local/pgsql/bin/psql -U postgres

登录数据库,执行后提示符变为 'postgres=#'    

ALTER USER postgres with encrypted password 'postgres';  设置postgres用户密码为postgres  

  \q  退出数据库

 

此时可以通过外部数据库客户端软件连接进行数据库管理

 

数据库开启PostGIS扩展

连接一个数据库,执行sql语句

CREATE EXTENSION PostGIS

报错

ERROR: could not load library "/usr/local/pgsql/lib/postgis-2.1.so": libproj.so.12: 无法打开共享对象文件: 没有那个文件或目录

 

此时修改

vi /etc/ld.so.conf

添加

/usr/local/proj4/lib

 

#使配置生效

ldconfig

 

再次执行开启扩展

CREATE EXTENSION PostGIS

成功,public模式下出现spatial_ref_sys表

 

创建GIS类型字段成功

CREATE TABLE "public"."gis_test" (

"id" varchar(16) COLLATE "pg_catalog"."default" NOT NULL,

"name" varchar(255) COLLATE "pg_catalog"."default",

"the_geom" "public"."geometry",

CONSTRAINT "gis_test_pkey" PRIMARY KEY ("id")

)

;

查看PostGIS版本

SELECT PostGIS_version()

升级PostGIS版本

首先到源码目录/root/postgis-2.1.5

make uninstall

在到下载编译源码postgis-2.2.8

最后make install

 

重启Postgresql后,版本依然是旧的,此时DROP掉扩展

DROP EXTENSION PostGIS

提示有几个表已经使用了,需要把相应的表删除掉(注意做好备份)

再次

DROP EXTENSION PostGIS

此时

SELECT PostGIS_version()

看到版本是新的了

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/416780.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三国人物共现网络

三国部分人物共现图 转载于:https://www.cnblogs.com/jzssuanfa/p/6814865.html

Spark单独集群模式部署

目录 网络配置 SSH 免密码登录 部署 执行测试 网络配置 192.168.81.157 node1 master 192.168.81.158 node2 slave1 192.168.81.159 node3 slave2 相同的配置先在一个节点上配置,配置完成后复制到其它节点上。 vi /etc/hosts 192.168.81.157 node1 192.168.…

flutter网络权限申请

在此文件&#xff08;android/src/main/AndroidManifest.xml&#xff09;中的manifest节点下添加如下代码&#xff1a; 注意&#xff0c;不是profile文件夹下的。 <uses-permission android:name"android.permission.READ_PHONE_STATE" /> <uses-permissio…

10.1.2 Document类型【JavaScript高级程序设计第三版】

JavaScript 通过Document 类型表示文档。在浏览器中&#xff0c;document 对象是HTMLDocument&#xff08;继承自Document 类型&#xff09;的一个实例&#xff0c;表示整个HTML 页面。而且&#xff0c;document 对象是window 对象的一个属性&#xff0c;因此可以将其作为全局对…

Ubuntu18.04 Flutter开发环境搭建

目录 flutter安装 android studio安装 Android Studio创建Flutter项目 运行应用程序 flutter安装 下载flutter https://flutter.dev/docs/development/tools/sdk/releases?tablinux https://storage.googleapis.com/flutter_infra/releases/stable/linux/flutter_linux_…

[原创] 毕设---在myeclipes中安装Hadoop开发插件

1、安装Hadoop开发插件hadoop安装包contrib/目录下有个插件hadoop-0.20.2-eclipse-plugin.jar&#xff0c;拷贝到myeclipse根目录下/dropins目录下。2、 启动myeclipse&#xff0c;打开Perspective&#xff1a;【Window】->【Open Perspective】->【Other...】->【Map…

ubuntu安装显卡驱动

1.卸载系统里低版本的英伟达驱动 sudo apt-get purge nvidia* 2.把显卡驱动加入PPA sudo add-apt-repository ppa:graphics-drivers sudo apt-get update 3.查找英伟达显卡驱动最新版本号 sudo apt-cache search nvidia 使用终端命令查看Ubuntu推荐的驱动版本 ubuntu-driver…

[转]cubemap soft shadow

https://community.arm.com/graphics/b/blog/posts/dynamic-soft-shadows-based-on-local-cubemap转载于:https://www.cnblogs.com/wantnon/p/6819103.html

flutter打开第三方应用

添加依赖 url_launcher: ^5.4.1 ————————main.dart import package:url_launcher/url_launcher.dart;void main() > runApp(MyApp());const String TITLEwhqtest;class MyApp extends StatelessWidget {overrideWidget build(BuildContext context) {return Materi…

vue2 watch引用类型 失败原因

vue中watch基本用法&#xff1a;  new Vue({el: #t1,data: {a: {b: 1,c: 2},},methods: {ch() {this.a.d5   //不打印ok 原理是watch只watch挂在data中的数据&#xff0c;初始化时给他们分别赋予setter与getter&#xff0c;如果是中途加上的属性&#xff0c;由于没有sette…

flutter webview浏览器及与js交互、打开第三方app

添加pubspec.yaml依赖 url_launcher: ^5.4.1 webview_flutter: ^0.3.181 --------------main.dart import package:flutter/material.dart; import package:url_launcher/url_launcher.dart; import package:webview_flutter/webview_flutter.dart;void main() > runApp(M…

Flutter1.12与原生Android交互(kotlin)

开发原生部分&#xff0c;还是点击Open for Editing in Android Studio好用&#xff0c;提示、自动引用功能都能正常使用。 -----------android/app/src/main/kotlin/com/glodon/gzzjy_app/MainActivity.kt import android.os.Bundle import android.os.PersistableBundle impo…

IP及端口号

IP&#xff1a;代表一台机器 端口号&#xff1a;每一个程序都有一个端口号与之对应 一个域名对应一个虚拟主机转载于:https://www.cnblogs.com/hwgok/p/6822372.html

Greenplum5单机部署连接报错 System was started in master-only utility mode问题修复

psql连接单机部署的Greenplum5会报错&#xff1a; psql: FATAL: System was started in master-only utility mode - only utility mode connections are allowed 命令可以使用 PGOPTIONS-c gp_session_roleutility psql -d postgres 但是程序、客户端都不行&#xff0c; …

ArcEngine临时数据存储 创建内存工作空间

参考网址&#xff0c;这里 工作中有时候需要使用临时数据&#xff0c;以前都是创建一个默认的shapefile或者gdb&#xff0c;今天发现esri官方帮助文档给出了一个方法&#xff0c;可以创建内存工作空间&#xff0c;代码如下&#xff1a; public static IWorkspace CreateInMemor…

postgresql数据库迁移技巧(降低版本迁移到GreenPlum pg11-pg8)

工具&#xff1a;navicat12 步骤&#xff1a; 1.创建scheme 2.导出源scheme的结构sql 3.在目标数据库执行源scheme结构sql中创建序列部分 4.直接操作拷贝scheme所有表&#xff08;使用生成sql会有版本不兼容的问题&#xff0c;我是从11降到8&#xff0c;跨度比较大&#xff09…

“约见”面试官系列之常见面试题之第九十六篇之active-class是谁的属性(建议收藏)

active-class 属于vue-router的样式方法&#xff0c;当router-link标签被点击时将会应用这个样式 一、首先&#xff0c;active-class是什么&#xff0c;active-class是vue-router模块的router-link组件中的属性&#xff0c;用来做选中样式的切换&#xff1b;相关可查阅文档&…

centos8安装中文(zh_CN)语言包

首先查看当前字符集 locale 看看有没有zh_CN.utf8 locale -a |grep CN 没有就安装 yum install -y langpacks-zh_CN 安装后再次确认配置 vi /etc/locale.conf LANG"zh_CN.UTF-8" 修改后重启即可

[转载][QT][SQL]sql学习记录3_sqlite之update delete like

转载自:详见 : http://www.runoob.com/sqlite/sqlite-create-table.html 约束表实例 下面是一个实例&#xff0c;它创建了一个 COMPANY 表&#xff0c;ID 作为主键&#xff0c;NOT NULL 的约束表示在表中创建纪录时这些字段不能为 NULL&#xff1a; sqlite> CREATE TABLE CO…

VirtualBox虚拟机与主机互相访问开启

VirtualBox主机网络管理器上创建一个网络&#xff08;默认名vboxnet0&#xff09; 虚拟机设置 网卡1 NAT&#xff08;默认&#xff09; 添加网卡2 选择Host-Only网络&#xff0c;界面名称选vboxnet0即可。 端口映射可以添加在NAT网卡上。