PostgreSQL【部署 01】离线安装PostgreSQL+PostGIS踩坑及问题解决经验分享(含安装文件PostgreSQL+PostGIS及多个依赖+测试SQL)

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: PostgreSQL【部署 01】离线安装PostgreSQL+PostGIS踩坑及问题解决经验分享(含安装文件PostgreSQL+PostGIS及多个依赖+测试SQL)

PostGIS 官网 本次为离线安装, 资源分享【有的安装包比较难下载】

链接:https://pan.baidu.com/s/1XPUoyReHOKyjNINpcyrMRQ 
提取码:9f26

包含资源:

1. postgresql-9.5.9.tar.gz
2. postgis-2.2.3.tar.gz
3. bzip2-1.0.6.tar.gz
4. gdal-2.1.2.tar.gz
5. geos-3.3.7.tar.bz2
6. json-c-0.12.1.tar.gz
7. libxml2-2.6.26.tar.gz
8. proj-4.9.3.tar.gz
9. protobuf-cpp-3.1.0.tar.gz

1.准备

# 组件安装
yum -y install gcc
yum -y install bzip2
yum -y install autoconf
yum -y install zlib-devel
yum -y install gcc gcc-c++ 
yum -y install readline-devel
# 添加用户组和用户(postgreSQL不能以root用户运行)
groupadd postgres
useradd -g postgres postgres
passwd postgres

2.安装PostgreSQL

# 1.解压
tar -zxvf postgresql-9.5.9.tar.gz 
# 2.在解压的目录内执行命令: prefix为安装目录
./configure –prefix=/usr/local/pgsql # 这个阶段要注意error信息,解决完全部error后再进行安装。
make
make install
# 3.环境变量配置
vi /etc/profile
  # ---添加配置---
  export LD_LIBRARY_PATH=/usr/local/pgsql/lib:$LD_LIBRARY_PATH
  export PATH=/usr/local/pgsql/bin:$PATH
  export MANPATH=/usr/local/pgsql/man:$MANPATH
# ---配置生效---
source /etc/profile
# 4.在/usr/local/pgsql文件夹下创建数据库数据文件夹
mkdir /usr/local/pgsql/data
chown -R postgres.postgres /usr/local/pgsql/data
# 切换为postgres用户
su postgres
# 5.在/usr/local/pgsql/bin文件夹下执行数据库初始化 
# 设置locale为C,并且template编码为UNICODE,使数据库支持中文
./initdb --locale=C -E UNICODE -D ../data/
# 6.使用root用户,更改日志文件的属主为postgres,修改后切回postgres用户
chown postgres /var/log/pgsql.log
# 7.修改配置/usr/local/pgsql/data
vi postgresql.conf # 使监听生效
listen_addresses='*'
port=5432
vi pg_hba.conf
host all all 0.0.0.0/0 md5
# 8.设置密码 /usl/local/pgsql/bin/ 否则用户postgres无法连接数据库
psql
ALTER USER postgres WITH PASSWORD 'postgres'; 
# 9.启动停止数据库 /usl/local/pgsql/bin/
./pg_ctl start -D /usr/local/pgsql/data/
./pg_ctl stop -D /usr/local/pgsql/data/

3.安装PostGIS

安装PostGIS之前须先安装proj4,geos,libxml2,gdal2,json-c,protobuf

1.安装proj4

# 1.解压 配置 编译 安装
tar -zxvf proj-4.8.0.tar.gz
cd proj-4.8.0
./configure --prefix=/opt/proj-4.8.0
make
make install
# 2.库的路径添加到系统中
vi /etc/ld.so.conf.d/proj-4.8.0.conf
  # ---添加配置---
  /opt/proj-4.8.0/lib
# 配置生效
ldconfig

2.安装geos

# 1.解压 配置 编译 安装
tar -jxvf geos-3.3.7.tar.bz2
cd geos-3.3.7
./configure --prefix=/opt/geos-3.3.7
make
make install
# 2.库的路径添加到系统中
vi /etc/ld.so.conf.d/geos-3.3.7.conf
  # ---添加配置---
  /opt/geos-3.3.7/lib
# 配置生效
ldconfig

3.安装libxml2

方式相同

4.安装gdal2

方式相同,make阶段时间较长(半小时)

5.安装json-c

方式相同

6.安装protobuf

方式相同,make阶段时间较长(20分钟左右)

7.安装postgis

安装前

# 解决gdal无法获取的问题
vi /etc/ld.so.conf
  # ---配置---
  include /etc/ld.so.conf.d/*.conf
  /usr/local/pgsql/lib
# 使配置生效
ldconfig –v

安装

tar -zxvf postgis-2.2.3.tar.gz
cd postgis-2.2.3
# 具体目录要根据扩展文件安装目录而定 
./configure --prefix=/opt/postgis --with-pgconfig=/usr/local/pgsql/bin/pg_config --with-geosconfig=/opt/geos-3.3.7/bin/geos-config --with-projdir=/opt/proj-4.9.3/  --with-xml2config=/opt/libxml2-2.6.26/bin/xml2-config --with-gdalconfig=/opt/gdal-2.1.2/bin/gdal-config 
make
make install

4.PostGIS验证(copy)

-- 建表
CREATE TABLE cities ( id int4, name varchar(50) );
-- 添加位置字段
SELECT AddGeometryColumn ('cities', 'the_geom', 4326, 'POINT', 2);
-- 插入几条数据
INSERT INTO cities (id, the_geom, name) VALUES (1,ST_GeomFromText('POINT(-5.911 3.115)',4326),'BeiJing,China');
INSERT INTO cities (id, the_geom, name) VALUES (2,ST_GeomFromText('POINT(-5.921 3.215)',4326),'BeiJing,China');
INSERT INTO cities (id, the_geom, name) VALUES (3,ST_GeomFromText('POINT(-5.931 3.315)',4326),'BeiJing,China');
INSERT INTO cities (id, the_geom, name) VALUES (4,ST_GeomFromText('POINT(-5.941 3.415)',4326),'BeiJing,China');
INSERT INTO cities (id, the_geom, name) VALUES (5,ST_GeomFromText('POINT(-5.951 3.515)',4326),'BeiJing,China');
INSERT INTO cities (id, the_geom, name) VALUES (6,ST_GeomFromText('POINT(-15.951 13.515)',4326),'Out,BeiJing,China');
-- 查询全表
select id,name,ST_AsText(the_geom) from cities ;
-- 查询任意两点间球面距离,并以id排序
SELECT p1.name,p2.name,ST_Distance_Sphere(p1.the_geom,p2.the_geom) FROM cities AS p1, cities AS p2 WHERE p1.id > p2.id;
-- 查询矩形内的点
select id, name, ST_AsText(the_geom) from cities where the_geom && ST_SetSRID(ST_MakeBox2D(ST_POINT(-10.0,-10.0),ST_POINT(10.0,10.0)),4326);
-- 任意给出几个点,查询该空间范围内的点,第一个点和最后一个点应是同一个点
select id,name,ST_AsText(cities.the_geom) from cities where the_geom && ST_AsText(ST_MakePolygon(ST_GeomFromText('LINESTRING ( -10.31 10.97 , -10.15 -10.09 , 10.35 10.27 , 10.31 -10.97 , -10.31 10.97)')));
-- 同上
select id,name,ST_AsText(cities.the_geom) from cities where the_geom && ST_MakePolygon(ST_GeomFromText('LINESTRING ( -10.31 10.97 , -10.15 -10.09 , 10.35 10.27 , 10.09 -10.88 , 30.31 -40.97 , -1.11 60.33 , -10.31 10.97)'));
-- string应该用单引号,双引号会报错
update cities set name = 'America,LAS' where id = 5;
-- 删除数据
delete from cities where id = 6;
-- 查询距离点(-87.71 43.741)距离为151600000米的所有点
SELECT name,st_astext(the_geom) FROM cities WHERE ST_DWithin(ST_Transform(ST_GeomFromText('POINT(-87.71 43.741)',4326),26986),ST_Transform(the_geom,26986), 151600000);

5.总结

离线安装PostgreSQL稍显繁琐【主要是用户的切换】,PostGIS插件的安装出现报错信息解决就好,也不是很麻烦。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
1月前
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
1月前
|
机器学习/深度学习 编解码 监控
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章详细介绍了如何使用YOLOv8进行目标检测任务,包括环境搭建、数据准备、模型训练、验证测试以及模型转换等完整流程。
1141 1
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
17天前
|
缓存 自然语言处理 并行计算
基于NVIDIA A30 加速卡推理部署通义千问-72B-Chat测试过程
本文介绍了基于阿里云通义千问72B大模型(Qwen-72B-Chat)的性能基准测试,包括测试环境准备、模型部署、API测试等内容。测试环境配置为32核128G内存的ECS云主机,配备8块NVIDIA A30 GPU加速卡。软件环境包括Ubuntu 22.04、CUDA 12.4.0、PyTorch 2.4.0等。详细介绍了模型下载、部署命令及常见问题解决方法,并展示了API测试结果和性能分析。
331 1
|
1月前
|
机器学习/深度学习 监控 计算机视觉
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
本文介绍了如何使用YOLOv7进行目标检测,包括环境搭建、数据集准备、模型训练、验证、测试以及常见错误的解决方法。YOLOv7以其高效性能和准确率在目标检测领域受到关注,适用于自动驾驶、安防监控等场景。文中提供了源码和论文链接,以及详细的步骤说明,适合深度学习实践者参考。
296 0
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
1月前
|
机器学习/深度学习 并行计算 数据可视化
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用PaddleClas框架完成多标签分类任务,包括数据准备、环境搭建、模型训练、预测、评估等完整流程。
84 0
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
|
1月前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
46 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
1月前
|
机器学习/深度学习 XML 并行计算
目标检测实战(七): 使用YOLOX完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用YOLOX完成图像目标检测任务的完整流程,包括数据准备、模型训练、验证和测试。
152 0
目标检测实战(七): 使用YOLOX完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
1月前
|
人工智能 监控 JavaScript
模拟依赖关系和 AI 是Vue.js测试的下一个前沿领域
模拟依赖关系和 AI 是Vue.js测试的下一个前沿领域
27 1
|
1月前
|
Ubuntu API Python
Chat-TTS chat-tts-ui 实机部署上手测试!Ubuntu服务器实机 2070Super*2 8GB部署全流程
Chat-TTS chat-tts-ui 实机部署上手测试!Ubuntu服务器实机 2070Super*2 8GB部署全流程
65 1
|
1月前
|
SQL 关系型数据库 MySQL
SQL批量插入测试数据的几种方法?
SQL批量插入测试数据的几种方法?
89 1