PostgreSQL 7.2.3インストール

2002年10月1日に、7.2.3がリリースされた。これは、7.2のバグフィックス版である。

PostgreSQLはRPMで組み込まれているサーバにインストールするとエラーが起きる場合があるので、入っているかどうかを確認し、入っていれば削除してからインストールを行う。

1.RPMの確認と削除

RPMでインストールされているかを確認する。

# rpm -qa | grep postgres

PostgreSQL関係のパッケージが現れたら、それらを全てアンインストールする。例えばpostgresql-serverをアンインストールするには次のように行う。

# rpm -e postgresql-server

2.インストール前の作業

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

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

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

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

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

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

3.インストール

1.PostgreSQLの解凍

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

# cd /usr/local/src
# tar zxvf postgresql_7.2.3.tar.gz

2.PostgreSQLのインストール

ここからは、先ほど作成した管理者ユーザpostgresで作業を行う。

# su - postgres

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

$ cd /usr/local/src/postgresql_7.2.3
$ ./configure --enable-multibyte=EUC_JP
$ make all
$ make install

なお、以前のバージョンでは、インストール後に別途オンライン・マニュアルをインストールしていたが、今(7.1以降?)はソースインストール時に/usr/local/pgsql/manにインストールされます。

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/postgres.confを編集する必要がある。以下、編集する項目を説明する。

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

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

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

host 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.2.3/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 ]