読者です 読者をやめる 読者になる 読者になる

もなかアイスの試食品

「とりあえずやってみたい」そんな気持ちが先走りすぎて挫折が多い私のメモ書きみたいなものです.

CentOS6.8にPostgreSQL9.6とPostGIS2.3の環境構築

DB・SQL PostgreSQL サーバ CentOS PostGIS

昔、PostgreSQL9.3でPostGISの環境構築をやったけど中々ブログに書くタイミングがなかった・・・

現在、PostgreSQLの最新は9.6なので、最新版でCentOS6.8に環境構築をしてみようと思う

ちなみにPostGISの公式のインストール方法はコチラ↓

postgis.net


まず、yumでインストール出来るようにrpmでパッケージを追加

# rpm -U https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-6-x86_64/pgdg-centos96-9.6-3.noarch.rpm


また、PostGISのパッケージインストールするためにはepelリポジトリが必要なので、以下のコマンドでepelリポジトリを追加

# yum install epel-release


あと、間違ってCentOS6で標準のPostgreSQL8.4をインストールしてしまわないように、パッケージを場外しておく

以下のコマンドでリポジトリの設定の変更

# vim /etc/yum.repos.d/CentOS-Base.repo

「exclude=*postgres*」を「base」と「updates」に追記する。

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

# ↓追記
exclude=*postgres*

#released updates 
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
# ↓追記
exclude=*postgres*



以下のコマンドで、PostgreSQL9.6とPostGISをインストールする。

# yum install postgresql96 postgresql96-server postgis2_96

「依存性が解決できない」等言われてインストールできないときは、epelリポジトリを参照していない設定になっている可能性があるため、オプション「--enablerepo=epel」を追加するとインストール出来るかも

# yum install --enablerepo=epel postgresql96 postgresql96-server postgis2_96



DBクラスタの作成する

# cd /var/lib/pgsql/9.6/
# su postgres
$ /usr/pgsql-9.6/bin/initdb data/
$ exit



DBを起動して、拡張機能PostGIS」を有効にする。

↓ postgresql-9.6デーモンの起動
# service postgresql-9.6 start

↓ コマンドで新しいDB「sample」を作成
# createdb -U postgres sample

↓ psqlでsampleにログインする
# psql -U postgres sample

↓ psqlでsampleにログインする
sample=# create extension postgis;



実際にPostGIS拡張機能が有効になったかテーブル・関数を見て確認

↓テーブルの確認
sample=# \d
                 リレーションの一覧
 スキーマ |       名前        |    型    |  所有者  
----------+-------------------+----------+----------
 public   | geography_columns | ビュー   | postgres
 public   | geometry_columns  | ビュー   | postgres
 public   | raster_columns    | ビュー   | postgres
 public   | raster_overviews  | ビュー   | postgres
 public   | spatial_ref_sys   | テーブル | postgres


↓関数の確認
sample=# \df
非常に長い・・・qで表示を中断できる

備考

「create extension」を実行せずに、PostGISの機能を利用することは可能

以下、公式サイトからの転記(Chapter 2. PostGIS Installation

createdb yourdatabase
createlang plpgsql yourdatabase
psql -d yourdatabase -f postgis.sql
psql -d yourdatabase -f postgis_comments.sql
psql -d yourdatabase -f spatial_ref_sys.sql
psql -d yourdatabase -f topology.sql
psql -d yourdatabase -f topology_comments.sql

ただし、PostgreSQLのバージョンアップ(9.3→9.5)する時にDBバックアップが使えない。

PostGISのバージョンも変わっており、関数内の共有ライブラリのファイルパスが「2.1→2.2」と変化しているため、バックアップの復元でコケる。

バージョンアップやLinuxWindows、またはWindowsLinuxへ移植しやすくするためには、「create extension」で機能を有効化したほうが良いでしょう。

自分は初めて9.3で環境構築した時は、SQLから構築したため結構ハマった・・・