PostGIS最新版をソースからインストール

投稿日: 2018年05月15月

最新版を使いたいので基本的にソースからインストールする。一部枯れてるライブラリのみパッケージから。

インストール方法は基本的に同梱のドキュメントに記載されているのでそれに準じる。

環境

  • CentOS 7.5 x64

PostgreSQLのインストール

まずはreadlineとopensslのライブラリをインストールする。

sudo yum install -y readline-devel openssl-devel

インストール方法はソースに同梱されてるINSTALLファイルに記載されてる。

wget https://ftp.postgresql.org/pub/source/v10.4/postgresql-10.4.tar.gz
tar xvfz postgresql-10.4.tar.gz
cd postgresql-10.4/
./configure
make
sudo make install

サービスの実行ユーザ(postgres)を作成する。

sudo adduser -d /var/pgsql postgres

postgresユーザでデータベースディレクトリを初期化する。

/usr/local/pgsql/bin/initdb -D /var/pgsql/data -E UTF-8 --no-locale

起動スクリプトをコピー。

sudo cp contrib/start-scripts/linux /etc/init.d/postgresql
sudo chmod 755 /etc/init.d/postgresql

起動スクリプトのデータディレクトリ指定(PGDATA)を書き換える。

PGDATA="/var/pgsql/data"

自動起動するように設定し、サービスを起動させる。

sudo systemctl enable postgresql
sudo systemctl start postgresql

PostGISの依存ライブラリのインストール

必須ライブラリは下記。LibXML2は十分に枯れてるからパッケージで、後はソースで入れる。

  • GEOS … ジオメトリ演算ライブラリ
  • PROJ4 … 地図投影ライブラリ
  • LibXML2 … XMLパーサライブラリ

下記はオプションだけど入れておくと良い。JSON-Cはパッケージで、後はソースで入れる。

  • GDAL … 地理空間データ抽出ライブラリ(実質必須)。ラスタサポートに必要。。あまり使わないけど毎度入れてる。
  • protobuf-c … ST_AsMVT関数に必要。ベクタタイルとか使ってみたいので今回初めて入れてみる。(結構苦労した)
  • JSON-C … ST_GeomFromGeoJson関数に必要。GeoJSONのインポートに使う。

まずは上記のうちJSON-CとLibXML2をパッケージでインストール。

sudo yum install -y json-c-devel libxml2-devel

続いて、ソースからGEOS、PROJ4、GDAL、protobuf-cをインストール。GDALが一番コンパイルに時間かかる。

GEOS

GEOSをインストール。

wget http://download.osgeo.org/geos/geos-3.6.2.tar.bz2
tar xvfj geos-3.6.2.tar.bz2
cd geos-3.6.2
./configure
make
sudo make install

PROJ4

PROJ4をインストール。

wget http://download.osgeo.org/proj/proj-5.0.1.tar.gz
tar xvfz proj-5.0.1.tar.gz
cd proj-5.0.1
./configure
make
sudo make install

GDAL

GDALをインストール。

wget http://download.osgeo.org/gdal/2.3.0/gdal-2.3.0.tar.gz
tar xvfz gdal-2.3.0.tar.gz
cd gdal-2.3.0
./configure
make
sudo make install

protobuf-c

事前にprotobufをインストール。

releasesのページから最新版をダウンロードしてコンパイルしてインストールする。

wget https://github.com/google/protobuf/releases/download/v3.5.1/protobuf-all-3.5.1.tar.gz
tar xvfz protobuf-all-3.5.1.tar.gz
cd protobuf-3.5.1/
./autogen.sh
./configure
make
sudo make install

protobuf-cをインストール

wget https://github.com/protobuf-c/protobuf-c/releases/download/v1.3.0/protobuf-c-1.3.0.tar.gz
tar xvfz protobuf-c-1.3.0.tar.gz
cd protobuf-c-1.3.0
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
./configure
make
sudo make install

PostGISのインストール

PostGISをインストール。

wget https://download.osgeo.org/postgis/source/postgis-2.4.4.tar.gz
tar xvfz postgis-2.4.4.tar.gz
cd postgis-2.4.4
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
./configure --with-pgconfig=/usr/local/pgsql/bin/pg_config
make
sudo make install

sudo sh -c 'echo "/usr/local/pgsql/lib/" > /etc/ld.so.conf.d/postgis.conf'
sudo sh -c 'echo "/usr/local/lib/" >> /etc/ld.so.conf.d/postgis.conf'
sudo ldconfig

適当なデータベースを作って下記SQLコマンドが実行できることを確認する。

CREATE EXTENSION postgis;

その他

外部からPostgreSQLにアクセスさせたい場合は2つやることがある。

  • FWのポートを開ける。
  • PostgreSQLの設定を変更する。

まずFWのポートを開ける場合はこのコマンド。5432ポートを開ける。

sudo firewall-cmd --permanent --add-port=5432/tcp --zone=public
sudo firewall-cmd --reload

PostgreSQLの設定は2つの設定ファイルを変更する。

1つ目は/var/pgsql/data/postgresql.conf。listen_addressesを変更してあげる。*にするとどこからでもアクセス可。

#listen_addresses = 'localhost'
listen_addresses = '*'

2つ目は/var/pgsql/data/pg_hba.conf。詳しくは省くけど、例えばどのIPv4セグメントからでも認証ありでアクセス可能にする場合はこう。(だいぶゆるいので注意)

host    all             all             0.0.0.0/0                 md5

名前:宮内 はじめ

Code for Nagoya名誉代表

E2D3名古屋支部長

プログラマーです。GISやデータビズが好きです。このサイトは宮内の個人的なメモです。

プロフィール

お問い合わせ