CentOS6.8にPostgreSQL9.6とPostGIS2.3の環境構築
昔、PostgreSQL9.3でPostGISの環境構築をやったけど中々ブログに書くタイミングがなかった・・・
現在、PostgreSQLの最新は9.6なので、最新版でCentOS6.8に環境構築をしてみようと思う
ちなみにPostGISの公式のインストール方法はコチラ↓
まず、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
↓ 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」と変化しているため、バックアップの復元でコケる。
バージョンアップやLinux→Windows、またはWindows→Linuxへ移植しやすくするためには、「create extension」で機能を有効化したほうが良いでしょう。
自分は初めて9.3で環境構築した時は、SQLから構築したため結構ハマった・・・