のーとぅせるふ

RHEL系最新OSにPostgreSQL9.2を入れて運用した話

PostgreSQLのサーバのレプリカが必要になり同期元を確認したらまさかのバージョン9.2(リリース2012年)だったのでOSだけでも最新が良いなぁと最新のAlmaLinuxにPostgreSQL9.2.24を入れて稼働するところまでのメモ

環境

  • AlmaLinux 9.5
  • PostgreSQL 9.2.24
  • PROJ 4.9.3
  • PostGIS 2.0.7

geo系のテーブルがあるからpostgis必要でした

前提

前提インストール

dnf install -y gcc-c++ glibc-devel zlib-devel libtool libxml2-devel geos-devel readline-devel make autoconf

ベースリポジトリだけでいけたと思うけどどうだろ

以降パス等は任意で書き換えて

PostgreSQLインストール

本体のインストール

PostgreSQL File Browser

ソースを取得して展開

cd /usr/local/src
wget https://ftp.postgresql.org/pub/source/v9.2.24/postgresql-9.2.24.tar.gz
tar zxf postgresql-9.2.24.tar.gz

本体をmake

cd postgresql-9.2.24
./configure --prefix=/usr/local/pgsql
make && make install

contrib(必要であれば)

cd contrib
make && make install

任意で~/.bashrcなどでPATHを通す

export PATH=$PATH:/usr/local/pgsql/bin

ユーザ作成 + PGDATA作成

useradd --home-dir=/var/lib/pgsql postgres

su - postgres
mkdir data
chmod 0700 data

cd data
initdb -D ./

その他ライブラリ

PostGISを使用

PROJインストール

PostGISの前提としてPROJが必要

PROJ Download

まずは本体の取得

cd /usr/local/src
wget https://download.osgeo.org/proj/proj-4.9.3.tar.gz
tar zxf proj-4.9.3.tar.gz

makeする

cd proj-4.9.3
mkdir -p /usr/local/proj4
./configure --prefix=/usr/local/proj4
make && make install

ldconfigでライブラリを登録しとくと良い

echo -n '/usr/local/proj4/lib' > /etc/ld.so.conf.d/proj4.conf
ldconfig

PostGIS

前提入れたのでPostGIS本体のインストール

PostGIS Source

本体の取得

cd /usr/local/src
wget http://download.osgeo.org/postgis/source/postgis-2.0.7.tar.gz
tar zxf postgis-2.0.7.tar.gz

PostgreSQLのpg_configのパスと先に入れたPROJのディレクトリを指定してmake

cd postgis-2.0.7
./configure --with-pgconfig=/usr/local/pgsql/bin/pg_config --with-projdir=/usr/local/proj4 --without-raster
make && make install

Unitファイル作成

systemdで管理させれば楽

systemctl edit --full --force postgresql-server.service
[Unit]
Description=PostgreSQL database server
Documentation=man:postgres(1)

[Service]
Type=forking
User=postgres
ExecStart=/usr/local/pgsql/bin/pg_ctl start  -D /var/lib/pgsql/data
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=0

[Install]
WantedBy=multi-user.target

起動

systemctl start postgresql-server.service

SQLの実行など

起動後はPATHを設定してればその他のバージョン同様psqlがそのまま使える

psql -U postgres -h localhost

ここまで書いといてだけど大人しくPostgreSQLのバージョン上げた方が良いと思う
9.2から上げていくの結構大変だけど

Fullsized Image