タイトルの通り、PostgreSQL9.3のインストール手順を記録します。例によってCentOS 6系を想定。Amazon Linuxでも同じ手順で実行できます。2013年10月16日時点で最新の9.3.1で検証済みです。

# 依存関係のあるdevelを入れておきます。
yum -y install readline-devel
yum -y install zlib-devel

# ユーザーを作成。名前は何でもよいですが、後々 initdbを実行するユーザーになります。
useradd postgres

# ディレクトリを作成
mkdir -p /usr/local/pgsql
mkdir -p /var/log/pgsql
mkdir -p /var/pgsql/data

# インストール。インストール先は /usr/local/pgsql を指定します。(変更可)
cd /usr/local/src/
wget "http://ftp.postgresql.org/pub/source/v9.3.1/postgresql-9.3.1.tar.gz"
tar zxvf postgresql-9*
cd postgresql-9*
./configure --prefix=/usr/local/pgsql
make
make install

PostgreSQL installation complete. と表示されればインストールは完了です。続いてPostgreSQLを起動します。

# Permissionの調整。
chown -R postgres:postgres /var/log/pgsql
chown -R postgres:postgres /var/pgsql/
chown -R postgres:postgres /usr/local/pgsql

# 初期化を行います。rootでは実行できないので、作成した postgres ユーザーで実行します。
su postgres -c'/usr/local/pgsql/bin/initdb --encoding=UTF-8 --no-locale -D /var/pgsql/data'

# 起動スクリプトを配置してプロセスを起動します
cp /usr/local/src/postgresql-9.3.1/contrib/start-scripts/linux /etc/init.d/postgres
chmod 700 /etc/init.d/postgres
chkconfig postgres on
/etc/init.d/postgres start

なお、initスクリプトは一部変更の必要があります。

  • PGDATA="/var/pgsql/data"
  • PGLOG="/var/log/pgsql/serverlog"

今回の手順の場合上記の2箇所の修正です。

続いてユーザーとデータベースを作成します。予め /usr/local/pgsql/bin にはPATHを通しておきます。

# ユーザーを作成します。今回作成するユーザーはユーザー及びDBの作成権限を持ちます。権限は必要に応じて、選択して下さい。
createuser -U postgres -a -d hoge_user

# DBを作成します。オーナーを hoge_user に指定しています。
createdb -U hoge_user -O hoge_user hoge_db

# ログイン
psql -U hoge_user hoge_db

最後に、パスワードを設定します。手順には記載しませんがpostgresユーザーのパスワードも設定しておきましょう。

ALTER USER hoge_user WITH PASSWORD 'hoge_pass';

設定ファイル /var/pgsql/data/pg_hba.conf の trust を md5 に変更し、PostgreSQLを再起動します。パスワードを利用して接続できることが確認できたら、全て完了です。

社内でもサーバー構築のAnsible化が進んでいますが、それにしても通しの手順がまとめられているに越したことはないので備忘録的なエントリを書いてみました。