对于在 linux 系统机器上手动一步步安装 postgresql ,以及安装postgis,折腾了好久。对于整改过程,做了一个完整的记录。
离线安装 postgresql 和配置 postgis 插件 在 redhat 7.3
安装postgresql
下载 postgresql
1 | 可以去官方网站下载 postgresql,我这里使用的是postgresql-9.3.2.tar.gz |
解压文件
1 | tar -zxvf postgresql-9.3.2.tar.gz |
进入解压目录并配置参数
1 | 进入解压目录 cd postgresql-9.3.2 |
** 注:这一步可能会发生一些错误,如果发生了,请参考下面的常见错误说明 **
编译
1 | make |
安装
1 | make install |
创建用户
1 | sudo useradd postgresql |
创建数据库文件存储目录并给postgresql用户富裕权限
进入数据库安装目录 cd /opt/postgresql-9.3.2
创建data目录 sudo mkdir data
给postgresql用户赋予权限 sudo chown -R postgresql data
创建log文件
创建log目录 sudo mkdir log
创建pg_server.log文件 vi pg_server.log :wq
给postgresql用户权限 sudo chown -R postgresql log
添加环境变量
在/etc/profile中添加环境变量
1 | #postgresql |
初始化数据目录
切换用户 su postgresql
初始化数据库 initdb -D data
启动数据库,设置psql命令
先切换到root目录下 su root
执行这句命令 ** /sbin/ldconfig /opt/postgresql-9.3.2/lib **
然后切换到 postgresql 用户下
启动数据库服务 pg_ctl -D data -l /opt/postgresql-9.3.2/log/pg_server.log start
这里直接可以执行 psql 以 postgresql 用户的身份进入测试一下
但是目前为止,该数据库只允许本地访问,如果运行其他用户访问的话还需要进行如下配置
配置监听地址和端口,并允许远程主机连接
1 | vi /opt/postgresql-9.3.2/data/postgresql.conf |
修改防火墙,开发5432端口
我在这里是直接将防火墙关闭,并且禁止使用了防火墙,实际操作,可能需要在设置开放5432端口
1 | sudo vim /etc/sysconfig/iptables |
在postgresql数据库中为之前创建的postgresql用户增加密码
1 | psql template1 |
注:此时 postgresql 用户为数据用户
这时,postgresql 用户就可以作为数据库的使用用户了,可以打开一个postgresql客户端,如 Navicat,尝试连接一下了
关闭postgresql数据库,并重新启动,使更改后的配置生效
下面是通过postgresql的pg_ctl工具操作的
关闭数据库 pg_ctl stop -m fast
启动数据库 pg_ctl -D data -l /opt/postgresql-9.3.2/log/pg_server.log start
常见错误
安装常见错误
1 | readline libray not found |
如果出现以上错误,说明你的系统缺少 readline库
1 | rpm -qa | grep readline |
zlib包同理
安装postgis
安装 geos
1 | tar -jxvf geos-3.7.1.tar.bz2 |
安装 proj
1 | tar -zxvf proj-4.8.0.tar.gz |
安装 gdal
1 | tar -zxvf gdal-2.1.1.tar.gz |
执行postgis 安装
1 | tar -zxvf postgis-2.4.5.tar.gz |

登录psql,安装gis扩展
1 | psql test |
出错

1 | cp /opt/geos-3.7.1/lib/libgeos_c.so.1 /lib64/ |

安装postgis2.0.1出错configure error: could not find gdal
1 | *checking for library containing GDALAllRegister... no* |
解决方法:
编译时 完之后,修改下列文件
1./etc/ld.so.conf
1
2
3include /etc/ld.so.conf.d/*.conf
/usr/local/pgsql/lib
2.执行指令
1
/sbin/ldconfig –v
再执行postgis的编译
