RedHat6安裝PostgreSQL9.6及Postgis2.26

一、PostgreSQL rpm離線安裝

1. 安裝環境

RedHat 6.9/ 64位

2. 準備工作

下載RPM包

訪問PostgreSQL網站,根據系統類別,系統版本選擇相關的包:(這裏針對Redhat6的鏈接,如果需要下載Redhat7的,那就修改鏈接中rhel6.x86_64rhel7.x86_64),點擊以下下載鏈接:
https://yum.postgresql.org/9.6/redhat/rhel-6-x86_64/postgresql96-9.6.10-1PGDG.rhel6.x86_64.rpm
https://yum.postgresql.org/9.6/redhat/rhel-6-x86_64/postgresql96-contrib-9.6.10-1PGDG.rhel6.x86_64.rpm
https://yum.postgresql.org/9.6/redhat/rhel-6-x86_64/postgresql96-libs-9.6.10-1PGDG.rhel6.x86_64.rpm
https://yum.postgresql.org/9.6/redhat/rhel-6-x86_64/postgresql96-server-9.6.10-1PGDG.rhel6.x86_64.rpm

https://yum.postgresql.org/9.6/redhat/rhel-6-x86_64/postgresql96-devel-9.6.10-1PGDG.rhel6.x86_64.rpm

下載的文件:

postgresql96-9.6.10-1PGDG.rhel6.x86_64.rpm

postgresql96-contrib-9.6.10-1PGDG.rhel6.x86_64.rpm

postgresql96-libs-9.6.10-1PGDG.rhel6.x86_64.rpm

postgresql96-server-9.6.10-1PGDG.rhel6.x86_64.rpm

postgresql96-devel-9.6.10-1PGDG.rhel6.x86_64.rpm(我在安裝postgis的時候提示錯誤:Please install the PostgreSQL server development packages and re-run configure,之後才下載的安裝包安裝)

3. 安裝PG

將上述Postgres安裝包放置在同一個文件夾中, 執行安裝命令:

rpm -ivh postgresql96-*.rpm

通過RPM包安裝, Postgres安裝程序會在/var和/usr下創建文件夾.
/var/lib/pgsql: 用於存放Postgres數據庫默認的數據文件夾
/usr/pgsql-9.6: 用於存放Postgres數據庫的命令、依賴庫及文檔目錄等信息
/var/lib/pgsql/9.6/data : 用戶存放PG默認配置的pg_hba.conf,postgresql.conf配置文件。

安裝完成查看pg版本:

postgres --version

4. 初始化數據庫

配置好數據後(如果配置了自定義路徑)數據庫默認是未啓動狀態。 需要進行初始化。
CentOS 6/Redhat 6

service postgresql-9.6 initdb

 初始化數據庫後,會默認在系統的目錄裏面初始化PG數據庫
如果自定義了目錄,會在/data/postgres裏面初始化文件,並生成pg_hba.conf,postgresql.conf

默認情況:

/var/lib/pgsql: 用於存放Postgres數據庫默認的數據文件夾
/usr/pgsql-9.6: 用於存放Postgres數據庫的命令、依賴庫及文檔目錄等信息
數據庫只能本機訪問,127.0.0.1 默認沒有密碼
/var/lib/pgsql/9.6/data : 用戶存放PG默認配置的pg_hba.conf,postgresql.conf配置文件

5. 配置數據庫遠程訪問

PG默認只能本機訪問,但是實際情況中,應用服務器多單獨部署,需要開通PG的遠程訪問權限,且是需要配置用戶密碼的。
需要修改postgres.conf, pg_hba.conf文件。
如果找不到文件在哪,使用 find命令搜索:

find / -name postgresql.conf

5.1 修改postgresql.conf

主要配置參數詳解:

#listen_addresses='localhost'
listen_addresses='*'   --- 修改成'*'全部ip都可以訪問改數據庫。

5.2 修改pg_hba.conf

vi pg_hba.conf

找到如下內容:
·"local" is for Unix domain socket connections only
local   all             all                                     trust
IPv4 local connections:
host    all             all             127.0.0.1/32            trust

在“host    all             all             127.0.0.1/32            trust”其後添加下面的內容

host    all             all             0.0.0.0/0               md5    #-- 添加本行

6. 啓動數據庫

啓動Postgres數據庫

service postgresql-9.6 start
#Starting postgresql-9.6 service:                               [  OK  ]

7. 測試數據庫

PG模式是不能用root用戶訪問數據庫,使用時需要用su postgres 切換到postgres用戶下。
使用psql命令進行測試。

psql命令詳解:

-h host, 指定連接的Postgres數據庫IP地址
-U username: 指定連接數據庫的用戶名
-d database: 指定連接的數據庫名
-p port: 指定數據庫連接的服務端口
-w: 表示不提示用戶輸入密碼
-W : 表示驗證數據庫用戶密碼
-l : 表示列出Postgres可用的數據庫信息

示例如下:

su - postgres    # -- root 切換到postgres
psql -h localhost -U postgres -d postgres -W
#Password for user postgres: 
#psql (9.6.10)
#Type "help" for help.
# 

使用默認腳本service postgresql initdb或/usr/pgsql-9.6/bin/postgresql96-setup initdb初始化數據庫時,需要修改用戶的密碼。在修改Postgres用戶密碼時,需要確保以下條件:

配置"pg_hba.conf"時需要確定服務器本地址的驗證方法爲trust, 即:
host all all 127.0.0.1/32 trust
如果爲peer|indent|md5方法時,需要將其修改爲trust, 否則登錄時會提醒輸入用戶密碼。

修改默認的postgres用戶密碼

切換系統用戶爲postgres, 通過psql -h localhost -U postgres -d postgres登錄Postgres數據庫,進入數據後,使用SQL

alter user postgres with password 'newpassword'

來爲用戶修改默認密碼。

示例如下:

su - postgres    # -- root 切換到postgres
psql -h localhost -U postgres -d postgres -w
postgres=#  alter user postgres with password 'newpassword';
#ALTER ROLE

8. PG開機自啓動

postges默認不自動啓動,使用以下命令打開。

chkconfig postgresql-9.6 on

9. Postgres日常服務管理

啓動數據庫:pg_ctl start -D /data/postgres
重啓數據庫: pg_ctl restart -D /data/postgres
停止數據庫:pg_ctl stop -D /data/postgres
強制重啓:pg_ctl restart -D /data/postgres -m f
強制停止:pg_ctl stop -D /data/postgres -m f
加載配置:pg_ctl reload -D /data/postgres
顯示服務狀態:pg_ctl status -D /data/postgres
連接數據庫: psql -h 127.0.0.1 -U postgres -p 5432 -d postgres -W

 

二、Postgis離線安裝

1 準備源碼包

準備gdal、proj、geos和postgis的源碼包,postgis版本注意和postgresql保持兼容。

Pg和Postgis的版本需要兼容,具體信息請看:http://trac.osgeo.org/postgis/wiki/UsersWikiPostgreSQLPostGIS

安裝包可以使用以下鏈接進行下載:

http://download.osgeo.org/gdal/2.2.3/gdal-2.2.3.tar.gz
http://download.osgeo.org/proj/proj-4.8.0.tar.gz
http://download.osgeo.org/geos/geos-3.3.3.tar.bz2
http://download.osgeo.org/postgis/source/postgis-2.2.6.tar.gz

將下載的文件拷貝到服務器,所需文件如下:

gdal-2.2.3.tar.gz
proj-4.8.0.tar.gz
geos-3.3.3.tar.bz2
postgis-2.2.6.tar.gz 

2 解壓編譯安裝gdal、proj、geos和postgis

依次解壓、編譯、安裝以上軟件包。

$ tar xf gdal-2.2.3.tar.gz && cd gdal-2.2.3 && ./configure --prefix=/usr/local/gdal && make && sudo make install
$ tar xf proj-4.8.0.tar.gz && cd proj-4.8.0 && ./configure --prefix=/usr/local/proj && make && sudo make install
$ tar xf geos-3.3.3.tar.bz2 && cd geos-3.3.3 && ./configure --prefix=/usr/local/geos && make && sudo make install
$ tar xf postgis-2.2.6.tar.gz && cd postgis-2.2.6 && ./configure -prefix=/usr/local/postgis --with-geosconfig=/usr/local/geos/bin/geos-config --with-projdir=/usr/local/proj --with-gdalconfig=/usr/local/gdal/bin/gdal-config && make && sudo make install

3 配置ldconfig

將gdal、proj、geos的lib目錄添加到ldconfig。

#vi /etc/ld.so.conf

include ld.so.conf.d/*.conf
#添加以下內容
/usr/local/gdal/lib/
/usr/local/proj/lib/
/usr/local/geos/lib/

 執行 ldconfig命令即可。

4 創建空間數據庫模板

# 創建無空間特性數據庫
postgres $ createdb txhglgj

# 創建相關空間數據庫相關的函數,類型,操作符等
postgres $ psql -f /usr/pgsql-9.6/share/contrib/postgis-2.2/postgis.sql -d txhglgj
postgres $ psql -f /usr/pgsql-9.6/share/contrib/postgis-2.2/rtpostgis.sql -d txhglgj

# 驗證空間數據庫版本
postgres $ psql txhglgj
psql (9.6.10)
輸入 "help" 來獲取幫助信息.

txhglgj=# select postgis_full_version(); 
                                                            postgis_full_version                                                             
---------------------------------------------------------------------------------------------------------------------------------------------
 POSTGIS="2.2.6 r16006" GEOS="3.3.3-CAPI-1.7.4" PROJ="Rel. 4.8.0, 6 March 2012" GDAL="GDAL 2.2.3, released 2017/11/20" LIBXML="2.9.1" RASTER
(1 行記錄)

txhglgj=# \d
                     關聯列表
 架構模式 |       名稱        |  型別  |  擁有者  
----------+-------------------+--------+----------
 public   | geography_columns | 視觀表 | postgres
 public   | geometry_columns  | 視觀表 | postgres
 public   | raster_columns    | 視觀表 | postgres
 public   | raster_overviews  | 視觀表 | postgres
 public   | spatial_ref_sys   | 資料表 | postgres
(5 行記錄)

 

5. 簡單測試

測試點(0, 0)是否在指定的多邊形內。

new_database=# select ST_Within(ST_GeomFromText('POINT(0 0)', 4326), ST_GeomFromText('POLYGON((1 1, 1 -1, -1 -1, -1 1, 1 1))', 4326)) ;
 st_within 
-----------
 t
(1 行記錄)

內容參考於:

https://www.jianshu.com/p/816141e62830

https://www.cnblogs.com/fanzhidongyzby/p/8279891.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章