PostgreSQLのインストール

 PostgreSQLはMySQLと比べ、非常に高機能なDBサーバである。本格的なDBといえばOracleが有名であるが、かなり高額で一般に使用するには難しい面もある。PostgreSQLはそれに比べてフリーで高性能なデータベース環境を構築することが可能なので、使用しているユーザもかなり多く、情報量が多いのが魅力である。  Linuxでは大部分のディストリビューションで、インストールCDの中にPostgreSQLのパッケージが入っていることが多く、はじめからインストールされているという場合もある。MySQLと同じく、ディレクトリ構成が特有なのでそのまま使用する場合は注意が必要。

PostgreSQL
DefaultPort : 5432 (pgsql)

1)「/usr/local/src/」以下でソースを展開し、そのディレクトリへ移動後にコンパイル、インストールを行う。インストール先は「/usr/local/pgsql」を指定している。

# cd /usr/local/src/
# tar zxvf postgresql-7.2.tar.gz
# cd postgresql-7.2/
# ./configure --enable-multibyte=EUC_JP --prefix=/usr/local/pgsql --with-tcl
# make
# make install

(configureオプションに--with-tclを入れると、pgaccessというプログラムがコンパイルされる。これはX Window上で動作するGUIのデータベース操作プログラムである。当然X環境がなければ動かないが、XFree86やTcl/tkが入っている環境ではこのオプションをつけて、pgaccessを動かして試してみてもよいだろう。)

2)PostgreSQLの管理者のためのユーザを作成し、ログインパスワードを設定する。ホームディレクトリはPostgreSQLをインストールしたディレクトリを指定し、所有者を変更する。

# groupadd -g 74 postgres
# useradd -u 74 -g postgres -d /usr/local/pgsql -s /bin/bash postgres
# passwd postgres
# chown -R postgres:postgres /usr/local/pgsql/

3)ここで(2)で作成したユーザになって、環境の設定を行う。bashのシェルの場合は~/.bash_profileに環境変数を加えて設定を反映させる。その後データベースを初期化する。

# su - postgres
$ vi .bash_profile

export PGLIB=$HOME
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PGLIB/lib
export PATH=$PGLIB/bin:$PATH
export PGDATA=$PGLIB/data $

source .bash_profile
$ initdb -D /usr/local/pgsql/data

(LD_LIBRARY_PATHの設定については、root権限で「/etc/ld.so.conf」に/usr/local/pgsql/libという1行を追加した後、ldconfigコマンドを実行してもよい)

4)PostgreSQLはデータベースの初期化後、自ホストでのみ利用できるので、他のホストから使用する場合は設定ファイルを変更し、そのホストに許可を出す必要がある。設定ファイルは「$PGLIB/data/pg_hba.conf」。設定は上から順番に優先される。

# vi data/pg_hba.conf

host    all       0.0.0.0 0.0.0.0 trust
(すべてのホストに許可を与える。)
host    database    0.0.0.0 0.0.0.0 crypt

(データベースdatabaseに、CryptAuthentication(暗号認証)を利用して許可を出す)

5)PostgreSQLを起動する。通常はpostgresユーザで起動するが、rootの場合はsuコマンドにオプションをつけて起動させることもできる(su - postgresql -c "コマンド")。必要に応じて自動起動の設定も行う(自動起動スクリプト)。

$ postmaster -S -i

または

$ pg_ctl -w start

(注:どちらでも問題なくPostgreSQLは起動するが、「phpPgAdmin」を使う場合下の方法では正常に動かない場合がある。心配なら上のコマンドで実行するとよい。)

6)ユーザおよびデータベースを作成する。どちらもオプションをつけずに実行すれば自分のユーザ名、同じ名前のデータベースが作られる。また実際にPostgreSQLを使用するには、psqlコマンドでデータベース名を指定する。こちらもデータベース名を省略すると自分のユーザ名のデータベースを開く。

$ createuser   (postgresというユーザを作成)
$ create     (postgresというデータベースを作成)
$ psq       (postgresユーザでpostgresというデータベースを開く)
> \q       (psqlを終了)

Web経由で一般ユーザに公開する場合は、「nobody」というユーザを追加し、データベース「database」のテーブル「table」へのアクセス権を与える場合は以下のようにコマンドを入力する。なおnobodyというユーザは、httpd.confで指定したユーザ名である。

$ createuser nobody
$ psql database
> grant all on table to nobody;
> \q

「データベースの作成」を選択し、種類は「標準」を選択。作成方法は「データベース・ファイルの新規作成」、アプリケーションのタイプは「汎用」、同時接続数は適当な値に(デフォルトは15)、使用するオプションにチェックをつける。グローバル・データベース名はホスト名+ドメイン名(ここでは「myhost.mydomain.ne.jp」)、SIDはホスト名が自動的に設定される。データベースの作成は相当時間がかかり、メモリも多く使うためにXを終了した状態で行うほうがよいのでここでは「スクリプトに保存」を選択する。スクリプトはたとえば「$ORACLE_HOME/install/sqlmyhost.sh」などとして保存しておく。
保存したらdbassistが終了するので、X Windowを抜けてコンソール画面に戻る。

8)保存したデータベース作成スクリプトを実行する。使用しているマシンのスペックによって変わるが、作成が終了するまで1時間以上、低スペックなマシンでは数時間かかることもあるので、すでにサーバをインターネットにつなげている場合は切断してから行ったほうがよい。

1)PHPのインストール後、Apacheのドキュメントルートに、phpPgAdminのアーカイブを解凍する。

# cd /home/httpd/
# tar zxvf phpPgAdmin_2-4-1.tar.gz
# cd phpPgAdmin/

2)日本語化スクリプトをコピーする。

# gunzip japanese-euc.inc.php.gz

3)phpPgAdminの設定ファイルをコピーし、内容を書き換える。

# cp config.inc.php-dist config.inc.php
# vi config.inc.php

$cfgServers[1]['local'] = true;
$cfgServers[1]['host'] = '';
$cfgServers[1]['port'] = '5432';
$cfgServers[1]['adv_auth'] = false;
$cfgServers[1]['user'] = 'postgres';
$cfgServers[1]['password'] = '';
$cfgServers[1]['only_db'] = '';

include("japanese-euc.inc.php");

※上の例では「adv_auth」をfalseにして、最初のログイン画面を出さず誰でもアクセスできるように設定しているが、その代わりとしてApacheのBasic認証の設定を行う必要がある。phpPgAdminのログイン画面では、存在するユーザ名を入力すれば、パスワードは空でなければどんなパスワードを入れてもログインできるようになっている。このためphpPgAdminのパスワード画面は使わないほうがよい。

4)必要に応じて、Apacheの設定ファイルを書き換える。

# vi /usr/local/apache/conf/httpd.conf
Alias /phppg/ "/home/httpd/phpPgAdmin/"
# service httpd restart

正しく起動すれば、インストール完了。

5)ブラウザでアクセスし、phpPgAdminのパスワード画面が正常に表示されることを確認する。なおphpPgAdminは、PHPのregister_globalsがOnでないと正常に動かないので注意する。

http://ホスト名/phppg/
TOP OF PAGE