CentOS に PostGIS/GDAL/Proj をインストールする。
環境:
- CentOS 6.4 (64bit)
- PostgreSQL 9.3
- PostGIS 2.1
- GDAL 1.9.2
- Proj 4.8.0
手順概要:
- EPEL の yum レポジトリを使えるようにする
- PostgreSQL の yum レポジトリを使えるようにする。
- 紛らわしいので標準 yum レポジトリの postgresql を除外する。8.x がインストールされている場合はアンインストールする。
yum
でインストールする。- 起動設定、データディレクトリの初期化、接続テストを実施する。
- テスト用データベースを作成して拡張機能を有効にする。
- リモートマシンからログインできるようにする。
コマンド :
# EPEL の yum レポジトリを使えるようにする
$ curl -O http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
$ sudo rpm -i epel-release-6-8.noarch.rpm
# PostgreSQL の yum レポジトリを使えるようにする。
$ curl -O http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm
$ sudo rpm -i pgdg-centos93-9.3-1.noarch.rpm
$ yum list gdal*
$ yum list postgresql*
#. 紛らわしいので標準 yum レポジトリの *postgresql* を除外する。
# 8.x がインストールされている場合はアンインストールする。
$ sudo vi /etc/yum.repos.d/CentOS-Base.repo
$ sudo yum remove postgresql
$ yum list postgresql*
# ``yum`` でインストールする。
$ sudo yum install -y gdal proj proj-devel proj-epsg
$ sudo yum install -y postgresql93-server postgresql93-contrib
$ sudo yum install -y postgis2_93 postgis2_93_devel postgis2_93_utils
# インストールしたコマンドの確認
$ ogr2ogr --version
$ proj
$ psql --version
# 起動設定、データディレクトリの初期化、接続テストを実施する。
$ sudo chkconfig postgresql-9.3 on
$ sudo service postgresql-9.3 initdb
$ sudo ls -l /var/lib/pgsql/9.3
$ sudo service postgresql-9.3 start
$ sudo service postgresql-9.3 status
$ sudo su - postgres -c "psql -l"
# テスト用データベースを作成して拡張機能を有効にする。
$ sudo su - postgres -c "createdb test"
$ sudo su - postgres -c "psql -l"
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
test | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
(4 rows)
$ sudo su - postgres -c "psql -d test -c \"SELECT version();\""
$ sudo su - postgres -c "psql -d test -c \"SELECT postgis_full_version();\""
$ sudo su - postgres -c "psql -d test -c \"CREATE EXTENSION postgis;\""
$ sudo su - postgres -c "psql -d test -c \"CREATE EXTENSION postgis_topology;\""
$ sudo su - postgres -c "psql -d test -c \"CREATE EXTENSION fuzzystrmatch;\""
$ sudo su - postgres -c "psql -d test -c \"CREATE EXTENSION postgis_tiger_geocoder;\""
# リモートマシンからログインできるようにする。
$ sudo vi /var/lib/pgsql/9.3/data/pg_hba.conf # host ベース認証を追加
$ sudo vi /var/lib/pgsql/9.3/data/postgresql.conf # listen_addresses を編集
$ sudo service postgresql-9.3 restart
# ユーザーを作成する。
$ sudo su - postgres -c "createuser -P -E -S sampleuser"
$ sudo su - postgres -c "psql -c \"GRANT ALL ON DATABASE test to sampleuser;\""
$ sudo su - postgres -c "psql -c \"SELECT * FROM pg_roles;\""
# ファイアーウォールの設定で 5432 番ポートの接続を許可する。
$ sudo iptables -A INPUT -p tcp --dport 5432 -j ACCEPT
$ sudo service iptables save
$ sudo service iptables reload
$ sudo iptables -L
メモ:
- PostGIS をインストールするときに依存関係により EPEL の geos や hdf5, netcdf もインストールされる。
- 拡張機能はデータベースごとに有効にする必要がある。
yum
で postgresql93-contrib をインストールしていないと fuzzystrmatch 拡張をインストールできない。- postgis_tiger_geocoder が fuzzystrmatch に依存している。
- fuzzystrmatch は文字列比較の拡張で、レーベンシュタイン距離なども計算できる。
- ユーザーを追加した場合は pg_roles テーブルを確認する。
postgresql.conf
の listen_addresses を変更した後は reload ではなく restart を実行する。
参考:
- YUM Installation - wiki.postgresql.org
- Chapter 2. PostGIS Installation - postgis.net
- F.15. fuzzystrmatch - www.postgresql.org
- createuser - www.postgresql.org
- PostGIS 2.0 on CentOS
- PostGIS 2.0.0マニュアル日本語訳 - www.finds.jp
- PostGISとは? - lets.postgresql.jp
- AWS で PostGIS を使ってみる - kshigeru.blogspot.jp/
- 稼動統計情報を活用しよう(2) - lets.postgresql.jp
- Tuning Your PostgreSQL Server/ja - wiki.postgresql.org
- Linux: Iptables Allow PostgreSQL server incoming request - www.cyberciti.biz