PostgreSQL8.1.4のインストール
id:solitary_shell:20060915:1158301668 のLinuxサーバの環境作りの続きです。
次に PostgreSQL のインストールです。現時点(2006/09/18)で最新版の PostgreSQL8.1.4 をインストールします。
$ ./configure $ make $ make check $ sudo make install
次に PostgreSQL 専用のアカウントを作成します。ここでは、postgresというアカウントがそれに相当します。データベースクラスタの作成は、このアカウントにて行います。
$ sudo useradd postgres
次に環境変数の設定を行います。方法はいくつかあるのですが、簡単なのは、~/.bash_profile に以下の6行を追加する方法です。ちなみに以下は、bashの場合ですので、cshなど他のシェルを利用する場合には、記述方法は異なるので注意して下さい。
PATH="$PATH":/usr/local/pgsql/bin export PGHOME=/usr/local/pgsql export PGLIB=$PGHOME/lib export PGDATA=/db/pgsql/data export MANPATH="$MANPATH":$PGHOME/man export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"
他にも上記の6行を ~/.bashrc_pgsql として新規に作成し、~/.bashrc_pgsql をログイン時に読む込むように .bash_profile に以下の3行を追加する方法もあります。
if [ -f ~/.bashrc_pgsql ]; then . ~/.bashrc_pgsql fi
または、 /etc/profile.d/pgsql.sh として作成するといった方法でもよいです。
$ cat /etc/profile.d/pgsql.sh PATH="$PATH":/usr/local/pgsql/bin export PGHOME=/usr/local/pgsql export PGLIB=$PGHOME/lib export PGDATA=/db/pgsql/data export MANPATH="$MANPATH":$PGHOME/man export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"
$ sudo chmod 755 /etc/profile.d/pgsql.sh
ただし、以下のサイトに書かれている内容を理解した上で使って下さい。思わぬ副作用を引き起こす可能性があります。
データベースクラスタの作成の前に事前にディレクトリを作成しておきます。最終的には、pgpool-IIの動作検証を1台のマシン上で行いたいと考えているので、別ポートでpostmasterを2つ動かす予定なので、以下のような形にしました。
$ sudo mkdir -p /db/pgsql_1/data $ sudo mkdir -p /db/pgsql_2/data $ sudo chown -R postgres:postgres /db/pgsql_1 /db/pgsql_2
データベースクラスタを実際に作成します。必ずpostgresアカウントにて実行して下さい。エンコーディングはUTF−8にしてあります。また必ず OSが持つロケートデータベースを利用しない --no-locale オプションを付けます。これを付けないと日本語のソート順などで問題が発生しますので注意して下さい。
$ su - postgres $ initdb -D /db/pgsql_1/data/ -E UTF-8 --no-locale $ initdb -D /db/pgsql_2/data/ -E UTF-8 --no-locale
その後、自動起動するように設定します。起動スクリプトはLinuxであれば、ソース内に用意されているので、そのまま利用します。
$ sudo cp ~/src/postgresql/postgresql-8.1.4/contrib/start-scripts/linux /etc/rc.d/init.d/postgresql_1 $ sudo cp ~/src/postgresql/postgresql-8.1.4/contrib/start-scripts/linux /etc/rc.d/init.d/postgresql_2
それぞれ別ポートで postmaster を起動させ、かつデータベースクラスタのディレクトリを指定するので、その部分を変更しておきます。
$ diff -b /etc/rc.d/init.d/postgresql_1 linux 4c4 < # description: PostgreSQL RDBMS 1 --- > # description: PostgreSQL RDBMS 35c35 < PGDATA="/db/pgsql_1/data" --- > PGDATA="/usr/local/pgsql/data" 74c74 < su - $PGUSER -c "$DAEMON -p 5433 -D '$PGDATA' &" >>$PGLOG 2>&1 --- > su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1 85c85 < su - $PGUSER -c "$DAEMON -p 5433-D '$PGDATA' &" >>$PGLOG 2>&1 --- > su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1
$ diff -b /etc/rc.d/init.d/postgresql_2 linux 4c4 < # description: PostgreSQL RDBMS 2 --- > # description: PostgreSQL RDBMS 35c35 < PGDATA="/db/pgsql_2/data" --- > PGDATA="/usr/local/pgsql/data" 74c74 < su - $PGUSER -c "$DAEMON -p 5434 -D '$PGDATA' &" >>$PGLOG 2>&1 --- > su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1 85c85 < su - $PGUSER -c "$DAEMON -p 5434 -D '$PGDATA' &" >>$PGLOG 2>&1 --- > su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1
最後に自動起動を有効にします。
$ sudo /sbin/chkconfig --add postgresql_1 $ sudo /sbin/chkconfig --add postgresql_2
その後、最低でも以下について設定を行う必要がありますが、これは後で書きます。
- postgresql.conf
- pg_hba.conf
参考情報
PostgreSQLのドキュメントは各バージョンごとに翻訳されており、非常に便利でお世話になっています。これも 日本PostgreSQLユーザー会: 文書・書籍関連分科会 の方々のおかげです。ありがとうございます。