PostGIS最新版をソースからインストール
投稿日: 2018年05月15月 更新日: 2018年06月05月
最新版を使いたいので基本的にソースからインストールする。一部枯れてるライブラリのみパッケージから。
インストール方法は基本的に同梱のドキュメントに記載されているのでそれに準じる。
環境
- 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やデータビズが好きです。このサイトは宮内の個人的なメモです。