PostgreSQL 8.0.3インストール

ここでは、PostgreSQL 8.0.3をソースからインストールする方法を紹介する。OSインストール時にパッケージとしてインストールされている場合は、あらかじめ削除しておくこと。

1 インストール前の作業

1.PostgreSQLの管理ユーザを作成

データベースは通常rootではなく専用のユーザを作り、そのユーザが管理を行う。予めrootでログインし、管理ユーザを作成する。

# useradd postgres
# passwd postgres
(パスワードを設定する)

2.PostgreSQL用ディレクトリの作成

PostgreSQLの実行ファイルやデータを格納するディレクトリを作成する。

# mkdir /usr/local/pgsql
# chown postgres.postgres /usr/local/pgsql

2 インストール

前準備が終わったら、インストール作業を行う。ダウンロードサイトよりソースファイルをダウンロードしておくこと。
引き続きrootユーザで作業を行うが、途中でpostgresユーザに切り替えるので注意する。

1.PostgreSQLの解凍

用意したPostgreSQLのソースを/usr/local/srcにコピーし、解凍する。

# cd /usr/local/src
# tar zxvf postgresql_8.0.3.tar.gz

2.PostgreSQLのコンパイル・make

正常に解凍できたら、コンパイル、makeを行う。

# cd /usr/local/src/postgresql_8.0.3
# ./configure --enable-multibyte=EUC_JP
# make all

3.PostgreSQLのインストール

makeでエラーが出なければ、インストール作業を行う。ここからは、先ほど作成した管理者ユーザpostgresで作業を行う。

# su - postgres

postgresユーザになったら、コンパイル、インストールを行う。

$ cd /usr/local/src/postgresql_8.0.3
$ make install

4.環境変数の設定

PostgreSQLを動作させるため、管理ユーザpostgresに対して環境変数を設定する。ホームディレクトリ(/home/postgres)配下の.bashrcファイルをviで開き、"# User specific aliases and functions"という行の下に、以下の行を追加する。

export PATH="$PATH":/usr/local/pgsql/bin
export POSTGRES_HOME=/usr/local/pgsql
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/data
export MANPATH="$MANPATH":$POSTGRES_HOME/man
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"

保存したら、以下のコマンドを実行し、設定を反映させる。
(またはpostgresユーザをログアウトし、再度ログインする)

$ cd /home/postgres
$ source .bashrc

5.データベースの初期化

PostgreSQLをインストールした後、データベースの初期化を一度だけ実行しなければならない。

$ initdb

6.初期設定(以下はまだ、前バージョンの情報です。近日修正予定)

上記の設定までで、PostgreSQLデータベースが利用できるようになった。しかし、デフォルトの設定では外部からのアクセスを禁止している。つまりインターネットなどのネットワーク経由でのアクセスができないということである。これらを可能にするためには、/usr/local/pgsql/data/postgresql.confを編集する必要がある。以下、編集する項目を説明する。

port 5432
postmasterが使用するポート番号を指定。デフォルトは5432。
tcpip_socket on/false
他のホストからの接続を許可するかどうか。デフォルトはfalse。許可したいので、ここをonに変更する。
silent_mode on/false
端末からpostmasterを切り離し、デーモンとして動かすオプション。デフォルトはfalse。デーモンとして動かしたいので、ここをonに変更する。

上記項目は、すべてコメントアウト(#)されている。設定を有効にするには、コメントをはずさなければならないことに注意。

また、tcpip_socketをonに設定しただけでは、自ホストからの接続しか許可しない。他からの接続を許可するには、/usr/local/pgsql/data/pg_hba.confファイルの末尾に、以下の行を追加する。

host all all 0.0.0.0 0.0.0.0 trust

7.起動・停止の方法

PostgreSQLデータベースの起動・停止はpostgresユーザ(initdbを実行したユーザ)で行う。起動・停止はpg_ctlコマンドで行 うことが推奨されている。pg_ctlは7.0で導入されたpostmasterの管理ツールで、postmasterの起動・停止を行う。

起動には、postgresユーザで次のコマンドを実行する
$ pg_ctl -w start

コマンド実行後、postmasterが実行可能になるまで待機し、結果を表示する。起動に成功すると、次のようなメッセージが表示される。

waiting for postmaster to start...done
postmaster successfully started

postmasterを終了させるには、次のコマンドを実行する。

$ pg_ctl stop

コマンド実行後、postmasterが終了するまで待機し、結果を表示する。終了に成功すると、次のようなメッセージが表示される。

waiting for postmaster to shut down.....done
postmaster successfully shut down

なお、PostgreSQLを利用中のユーザがいると、次のメッセージが表示され、postmasterを終了することができない。

waiting for postmaster to shut down............................... failed
pg_ctl: postmaster does not shut down

この場合、接続中のユーザにログオフしてもらうか、以下のコマンドでpostmasterを強制終了させる。

$ pg_ctl -m f stop

しかし、この方法ではトランザクションが強制終了してしまうので、注意しなければならない。

8.自動起動の設定

サーバ起動時にpostmasterを自動的に起動させるには、次のように設定する。なお、ここからはrootで作業を行う。
自動起動用スクリプトがソースに用意されているので、それを/etc/rc.d/init.dにpostgresというファイル名でコピーする。

# cp /usr/local/src/postgresql-7.4.2/contrib/start-scripts/linux /etc/rc.d/init.d/postgres

インストール時にデータファイルなどをデフォルトではないディレクトリに配置した場合は、そのようにpostgresファイルを編集する。上記のとおりインストールをしているなら、編集は必要ない。

作成したファイルに実行権をつけ、シンボリックリンクを張る。

# chmod 755 /etc/rc.d/init.d/postgres
# chkconfig --add postgres

サーバを再起動し、動作を確認しよう。なお、手動での起動、停止は次のように行う。

# /etc/rc.d/init.d/postgres start ・・・起動
# /etc/rc.d/init.d/postgres stop ・・・停止

9.その他の設定

PostgreSQLにアクセスするプログラムの多くは、共有ライブラリ「libpq」を呼び出して使用している。そのため、libpqが何処にあるのか を設定する。Red Hat系のディストリビューションの場合、/etc/ld.so.confファイルをviで開き、以下の行を追加する。
なお、この作業はrootで行う

/usr/local/lib
/usr/local/pgsql/lib

設定を保存し、反映させる。

# ldconfig

10.Apacheからデータベースを利用するための設定

PostgreSQLが使えるようにはなったが、このままではApacheからデータベースが利用できない。ApacheとPHP、PostgreSQLを組み合わせてWeb-DBMS連携システムを構築するには、Apacheの実行ユーザであるnobodyをPostgreSQLのユーザとして登録しなければならない。

PostgreSQLのユーザ登録は、DB管理者であるpostgresユーザで行う。なお、ユーザ登録時にたずねられる質問には全て「n」と答える。

$ createuser nobody
Shall the new user be allowed to create databases?(y/n) n
Shall the new user be allowed to create more new users?(y/n) n
CREATE USER

これで、PostgreSQLのユーザとしてApacheの実行ユーザ「nobody」が登録された。


[ TOP ]