PostgreSQLでDBサーバを構築する。LOCUS社の
「Linux/FrssBSD SQLデータベース構築入門(PostgreSQL6.4.2+PHP3編)」
という本を参考にした。
RedHat Linux6.1にパッケージされてるPostgreSQLは6.5.2なので、ちょっと困ったけど、
なんとかなった。
ここでは、この本を中心に説明する。
まず、インストールだが、当然RedHat LinuxをインストールしたときにPGSQLも
インストールされているので必要ない。さらにpostgresユーザも作成されている。
ということで、実際に行うのは環境設定からだ。
その前に、ユーザはpostgresでログインする。PGSQLに限らず、DBサーバは通常、 rootとは別にDBサーバを管理するユーザを必要とする。別にrootでもいいんだろうけど、 実際、別のユーザを使ったほうがいろいろと便利である。だから、DBサーバに関することは ほとんどデータベース用管理ユーザで行う。
環境変数の設定
PostgreSQLを動作させるために、環境変数の設定を行う。
.bashの環境設定
環境変数の設定は、postgresユーザとしてログインしたときに自動実行 される.bash_profileで行う。ホームディレクトリからviで .bash_profileを開き、次の行を追加する。
| export POSTGRES_HOME=/usr |
| export PGLIB=$POSTGRES_HOME/lib/pgsql |
| export PGDATA=$POSTGRES_HOME/data |
| export MANPATH="$MANPATH":$POSTGRES_HOME/man |
| export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB" |
参考書では、先頭に「export PATH="$PATH":/usr/bin」
という行があるが、マシン起動時に既にパスが通っていたので、設定しなかった。
また、PGSQLのホームディレクトリも参考書では「/usr/local/pgsql」
になっているが、これは自分でデフォルトの設定でコンパイル・インストール
した場合のパスであり、RedHat Linuxをインストールするときに一緒にインストール
した場合はこちらのパスになってた。このパスを探すのに苦労しました。(>_<)
編集後は、sourceコマンドで変更を反映させる。
| # source .bash_profile |
ちなみに、ログインしなおしてもOK。
データベースを初期化
envコマンドで環境変数が正しく設定されていることを確認したら、
一度だけ「データベースの初期化」を行う。データベースの初期化には
「initdb」コマンドを使用するが、このままではエラーが出てしまう。
なぜなら、環境変数でPGDATA=$POSTGRES_HOME/dataと指定しているが、
このdataディレクトリが存在しないからである。そこで/usrにdataディレクトリを
作成するのだが、ここはroot権限がないと作れないのでsu -でスーパーユーザになり、
ディレクトリを作成後、
| # chown postgres.postgres /usr/data |
を実行してpostgresユーザがdataディレクトリを使えるようにする。
そのあとに、
| # initdb |
を実行する。
逆に、このPGDATAの設定を変えることにより、任意のディレクトリや
ハードディスクにデータベースのデータを格納することができる。サーバの
付加分散を考えるなら、別のハードディスクに作成したほうがいいだろう。
(今気が付いた・・・)
PostgreSQLの起動
PostgreSQLを起動する。
pg_hba.confの設定
PostgreSQLはデフォルトの設定では、クライアント(他のホスト)から
データベースへのアクセス要求があっても一切答えないようになっている。
これでは動的なwwwページが作れないので、アクセス要求にこたえるように設定を
変更する。
pg_hba.confは初期状態ではReadOnlyになっているため、
パーミッションを変更する。
| # cd /usr/lib/pgsql/data |
| # chmod 600 pg_hba.conf |
次にこのファイルをviで開き、次の行を探す (似たような行が複数あるので注意!)。
| #host | all | 0.0.0.0 | 0.0.0.0 | trust |
この行のコメントをはずして、保存する。
postmasterを起動
次のようにコマンドを実行すれば、postmasterが起動する。
| # postmaster -S -i |
起動を確認するには、psコマンドを使う。
| # ps x |
出てきたデータの中に
| /usr/bin/postmaster -S -i |
という行があればOK。
サーバ起動時にpostmasterを起動する。
postmasterを起動するスクリプトをサーバの起動時に自動的に実行する
ように設定する。
suコマンドでrootになり、/etc/rc.d/rc.localファイル
に次のようなスクリプトを追加する。
| # rm /tmp/.s.PGSQL.* |
| # su - postgres -c "/usr/local/pgsql/bin/postmaster -S -i" |
サーバを再起動し、postmasterが起動しているかどうかを確認しましょう。
PostgreSQLユーザの登録
LinuxのユーザがクライアントマシンからODBC経由でPostgreSQLが管理する
データベースにアクセスするためには、そのユーザをPostgreSQLのユーザデータベース
に登録しておく必要がある。
PostgreSQLのユーザデータベースへの登録はpostgresアカウントでログインし、
「createuser」コマンドを使って行う。この辺は参考書のとおりで問題なく出来た。
これで、PostgreSQLが使えるようになった。後はPostgreSQL上にデータベースを作成し、 WebやAccessなどから利用するだけである。これらの設定は別ページで解説する。