先日、AWSのEC2インスタンスにPostgreSQL9.6をインストールしたのだが、起動時にエラーが発生した。

この問題の解決方法についてまとめておく。

PostgreSQLのインストール

まずは下記のコマンドでインストールを行っておく。

yum install postgresql96-server postgresql96-devel postgresql96-contrib

このまま「systemctl start」コマンドで起動させたところ、以下のエラーが発生した。

Process: 29800 ExecStartPre=/usr/pgsql-9.6/bin/postgresql96-check-db-dir ${PGDATA} (code=exited, status=1/FAILURE)

データベースの初期化

まずは下記コマンドで初期化を行う。

/usr/pgsql-9.6/bin/postgresql96-setup initdb

firewalldの設定

firewalldをインストールしている場合、以下の設定を行っておく。

firewall-cmd --add-service=postgresql --zone=public --permanent
firewall-cmd --reload

設定ファイルの更新

次に以下のとおり設定ファイルを更新しておこう。

vim /var/lib/pgsql/9.6/data/postgresql.conf

# - Connection Settings -
listen_addresses = '*' ←追記する(全てのIPに対し受信する)
vim /var/lib/pgsql/9.6/data/pg_hba.conf

# IPv4 local connections:

↓上のコメントアウトし以下のとおり受信許可アドレスを設定する
#host    all             all             127.0.0.1/32            ident
host    all             all             0.0.0.0/0               md5

サービス起動

ここまで準備ができたら再度サービスの起動を試してみる。

systemctl daemon-reload
systemctl enable postgresql-9.6.service
systemctl start postgresql-9.6

これで無事に起動することができるはずだ。