データベースサーバ(PostgreSQL)を立ち上げる
PostgreSQLの特徴
PostgreSQLの特徴を以下に示します。
- SQL92のサポート
PostgreSQLは、データベースの標準言語である SQL92 をサポートしています。
トランザクションはもちろん、副問い合わせ、主キーなどの SQL92 の重要な
機能のほとんどをサポートします。
- 無償利用 & ソースコードの公開
PostgreSQL は無償で利用でき、しかも完全なソースコードが公開されている
ソフトウェアです。個人での使用はもちろん、商利用も可能で、商品に組み込んで
販売することもできます。
- 数多くのプラットフォームで稼働
PostgreSQL は、ほとんどの UNIX プラットフォームに移植されています。現在の
ところ、動作が確認されているプラットフォームは以下のものがあります。
- FreeBSD
- NetBSD
- OpenBSD
- BSD/OS
- Linux
- SunOS 4.1.x
- Solaris 2.5/2.6/2.7
- HP-UX 9.0/10/11
- IRIX 5.3
- IBM AIX
- 多様なプログラミングインターフェースをサポート
PostgreSQL では、以下のプログラミング言語をサポートします。
- C
- C++
- Tcl/Tk
- Perl
- Java (タイプ4 JDBCドライバ)
- Python
- ecpg (C言語にSQLを埋め込むためのプリプロセッサ)
- PHP (WWW専用スクリプト言語)
- ruby (オブジェクト指向スクリプト言語)
- クライアント/サーバアーキテクチャ
データベースを利用するクライアントと、データベースエンジンを提供する
サーバが完全に独立しています。これにより、以下のメリットがあります。
- クライアント用のライブラリが軽量になるので、アプリケーションプログラム
のサイズが減少します。
- データベースエンジンのプログラムが変わっても、クライアント側が影響を
受けにくくなります。
- ネットワークを利用できるようになります。
- クライアントとサーバが異なるプラットフォームでもかまいません。
- 日本語 & 国際化対応
データベース単位で、以下の文字コードのうちの1つを使用できます。
- 各国のEUC(Extended Unix Code)
- 日本語
- 中国語
- 中国語(台湾で使用されているもの)
- 韓国語
- Unicode(UTF-8)
- マルチリンガルエディタMuleの内部コード
- ユーザ定義関数
PostgreSQL では、C言語、SQL言語を使ってユーザ定義の関数を作成することが
できます。
- リレーショナルデータモデルを越えるオブジェクト指向機能
PostgreSQL は、伝統的なリレーショナルモデルベースに、オブジェクト指向機能
をプラスした新しいタイプの「オブジェクトリレーショナルデータベース」と
言われるモデルをサポートします。
PostgreSQLのインストール
今回は、PostgreSQL を Vine Linux 1.1 上にインストールします。
その際の手順を以下に説明します。
ダウンロード
PostgreSQLの本家のホームページは、以下のURLになります。
http://www.postgresql.org/
また、日本では、日本PostgreSQLユーザ会があります。URLは以下になります。
http://www.jp.postgresql.org/
上記のURLより、適当なFTPミラーサイトを探し、PostgreSQLのソースファイルを
ダウンロードします。
PostgreSQLの各種パッチに関する情報は、
http://www.sra.co.jp/people/t-ishii/PostgreSQL/index.html
にあります。上記のURLより、パッチ済みのソースファイルも入手できます。
今回は、上記のURLよりパッチ済みの postgresql-6.5.3-patched-20000215.tar.gz
をダウンロードしました。
また、
http://www.remus.dti.ne.jp/~sim/postgres/index.html
より、PostgreSQLの日本語マニュアル psqlj-6.5.3.diff.gz をダウンロードします。
専用アカウント作成
PostgreSQLを利用するためには、専用のUNIXアカウントを利用すると便利です。
複数のユーザがPostgreSQLを利用する通常の環境では、専用のアカウントにより、
データベースを管理するようにします。
ここでは、
ユーザ名 :postgres
ユーザID :200
グループID :200
ホームディレクトリ:/usr/local/pgsql
というユーザ postgres を作成します。rootで以下のように実行します。
# vipw
以下の行を追加します。
postgres:*:200:200:PostgreSQL User:/usr/local/pgsql:/bin/tcsh
# vi /etc/group
以下の行を追加します。
postgres::200:postgres
# passwd postgres
# mkdir /usr/local/pgsql
# chown -R postgres.postgres /usr/local/pgsql
カーネル再構築
PostgreSQLでは、System V の共有メモリ機能が必要です。FreeBSDでは、
デフォルトでこの機能は使えないので、カーネルの再構築をする必要があります。
カーネルコンフィグレーションファイルをチェックし、以下のキーワードが無い
場合には追加します。
options SYSVSHM
options SYSVSEM
options SYSVMSG
インストール
ここから以降のステップは、postgres ユーザで実行します。
% su - postgres
PostgreSQL のソースを置くディレクトリを作成します。
% cd /usr/local/pgsql
% cd src
作成したディレクトリにダウンロードしたファイルを置きます。格納したファイルは
以下になります。
パッチ済みソースファイル postgresql-6.5.3-patched-20000215.tar.gz
日本語マニュアル psqlj-6.5.3.diff.gz
アーカイブを解凍・展開し、日本語マニュアルをインストールします。
% cd src
% tar xvfz postgresql-6.5.3-patched-20000215.tar.gz
% cd postgresql-6.5.3
% zcat psqlj-6.5.3.diff.gz | patch -p0
次に、configureスクリプトを実行し、プラットフォームに適した Makefilw
を作成します。
% cd src
% ./configure --with-mb=EUC_JP
--with-mb=で文字コードを指定します。
configure が無事終了したら、コンパイルします。
% gmake all
...
All of PostgreSQL is successfully made. Ready to install.
上記のように表示されたら、コンパイルが正常に終了しました。以下のように
インストールします。
% gmake install
% cd ../doc
% gmake install ドキュメントのインストール
以上で PostgreSQL のインストールは終了です。
PostgreSQLの環境設定
インストールが完了したら、PostgreSQL を利用するために必要な環境設定を行います。
ここでの環境設定は、ユーザ postgres だけでなく、PostgreSQL を利用する全ての
ユーザに必要です。
- bashの場合
~/.bashrc に以下の記述を追加します。
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"
記述後に
% source ~/.bashrc
を実行します。
- csh/tcshの場合
~/.cshrc に以下の記述を追加します。
setenv PATH "$PATH":/usr/local/pgsql/bin
setenv POSTGRES_HOME /usr/local/pgsql
setenv PGLIB $POSTGRES_HOME/lib
setenv PGDATA $POSTGRES_HOME/data
if ($?MANPATH) then
setenv MANPATH "$MANPATH":$POSTGRES_HOME/man
else
setenv MANPATH $POSTGRES_HOME/man
endif
if ($?LD_LIBRARY_PATH) then
setenv LD_LIBRARY_PATH "$LD_LIBRARY_PATH":"$PGLIB"
else
setenv LD_LIBRARY_PATH $PGLIB"
endif
記述後に
% source ~/.cshrc
を実行します。
PostgreSQLの初期設定
データベースの初期化
PostgreSQLでは、データベースを管理するためのディレクトリが必要です。
これが環境変数 PGDATA で指定したディレクトリです。このディレクトリを作成
することを「データベースの初期化」と呼びます。初期化が終わったディレクトリを
「データベースインスタンス」と呼び、後述の postmaster が管理します。
1つのデータベースインスタンスには、1つの postmaster プロセスが対応します。
ポート番号を変えれば複数の postmaster プロセスを起動することができますので、
1つのホストに複数のデータベースインスタンスが共存できます。
データベースの初期化を行うには、環境変数 PGDATA でデータベースの場所が既に
指定されているので、postgresユーザで以下のように実行します。
% initdb
上記のコマンドを実行して、データベースの初期化を行ったユーザが、その
データベースの所有者となります。
postmasterの起動
postmaster は一度起動されたらずっと働き続け、クライアントからの接続要求を
待ちます。接続要求があるとデータベースエンジンを起動し、データベースを利用
できる状態にします。従って、postmaster が動作していないと PostgreSQL を
利用することはできません。
postmaster を起動する際に、環境変数 PGDATA 、または引数 -D で
データベースインスタンスを指定しますが、postmaster は、この
データベースインスタンスを作成したユーザのみ実行することができます。
環境変数 PGDATA は既に設定してあるので、postgres ユーザで以下のように
postmaster を起動します。
% postmaster -S -i
postmaster には、以下のようなオプションがあります。
- -D パス名
データベースインスタンスへのパスを指定します。
- -p ポート番号
postmaster が使用するポート番号を指定します。章略時は 5432 が使われます。
- -b パス名
バックエンド(データベースエンジン)である postgres へのパス名を指定
します。省略した場合はコマンドサーチパスより検索されます。
- -i
他のホストからの接続を受け付けるようにします。
- -N バックエンド数
postmaster が起動できる最大のバックエンド数を指定します。
省略時は 32 で、最大 1024 まで指定できます。
- -B バッファ数
データベースが共有メモリ上で管理するバッファの数を指定します。
1個のバッファの大きさは 8K バイトで、省略時は 64 個です。
- -d デバッグレベル
デバッグレベルを 1 〜 3 までの数字で指定します。数字が大きい程、
デバッグ情報が詳細になります。
- -o バックエンドオプション
バックエンド(postgres)の認識するオプションを記述します。
利用頻度の高いものを以下に示します。
- -F
このオプションを使うと、バックエンドは更新データを直ちにディスクに
書かず、ディスクへの書き込みタイミングを OS に任せます。
(通常 30 秒に 1 回)
- -S ソートメモリ
ソート処理とハッシュ処理に使うバッファの大きさを Kバイト単位で
指定します。デフォルトは 512 です。
postmasterの自動起動
システムの起動時に、自動的に postmaster が起動するように設定します。
Linux の場合は /etc/rc.d/rc.local に、FreeBSD の場合は /etc/rc.local に
以下の記述を追加します。
#
# Starting PostgreSQL Server
#
POSTGRESDIR=/usr/local/pgsql
if [ -x $POSTGRESDIR/bin/postmaster -a -d $POSTGRESDIR/data ]; then
echo -n 'Starting PostgreSQL Server:'
rm -f /tmp/.s.PGSQL.5432
su - postgres -c "postmaster -S -i"
echo -n 'postmaster. '
fi
ここで、/tmp/.s.PGSQL.5432 は postmaster が使用する UNIX ドメインのソケットで
5432 はポート番号を表しています。
ユーザ登録
PostgreSQL には、UNIX と同様に、「ユーザ」という概念があります。PostgresSQL を
使う場合には、あらかじめユーザ登録を行っておく必要があります。ユーザ登録は
postgres ユーザで以下のように行います。
% createuser sakai ← ユーザ sakai を登録します。
Enter user's postgres ID or RETURN to use unix user ID:1001 -> ← ユーザIDを指定します。デフォルト値はUNIXのユーザIDと同じ値です。
Is user "sakai" allowed to create databases (y/n) y ← 新しいデータベースを作る権限を与えるかを設定します。通常は y とします。
Is user "sakai" a superuser? (y/n) n ← postgresユーザと同じ権限を持たせるかどうかを設定します。通常は n とします。
createuser: sakai was successfully added
なお、一度登録したユーザを削除するには、以下のようにします。
% destroyuser sakai
データベースの作成
PostgreSQL では複数のデータベースを持つことができます。データベースを作成する
には、createdb コマンドを使います。
% createdb データベース名
データベース名を省略した場合には、ユーザ名と同じデータベース名がデフォルト値に
なります。データベースは、$PGDATA 以下に作成されます。
データベースを消去するには、destroydb コマンドを使います。
% destroydb データベース名
destroydb コマンドは、postgresユーザか、そのデータベースを作ったユーザだけが
実行できます。
セキュリティ機能
PostgreSQL では、必要に応じて以下のようにセキュリティを細かく設定できます。
- ホスト名によるセキュリティは、host based authenticatio (HBA)と呼ばれ、
バックエンド接続時の基本的なセキュリティを提供します。
- 個々のユーザごとにパスワードによる認証が可能です。パスワードに認証機構
には、flat file authentication と crypt authentication の 2 通りの方法が
あります。
- テーブルごとにアクセス権を設定できます。これは SQL の標準で決まっている
方法で、select/insert/update/delete の各機能をユーザ/グループに対して
許可/不許可を設定できます。
host based authentication (HBA)
host based authentication の設定は、$PGDATA/pg_hba.conf で行います。
pg_hba.conf のフォーマットは
host DBNAME IP_ADDRESS ADDRESS_MASK USERAUTH [AUTH_ARGUMENT]
以下に、各キーワードについて説明します。
pg_hba.conf は上から順に見ていき、条件にマッチした行が見つかると、
それが適用されます。以下に例を示します。
host all 192.168.0.1 255.255.255.255 reject
host all 0.0.0.0 0.0.0.0 trust
上記の例では、192.168.0.1 以外のホストからの接続が許可されます。
flat file password authentication
flat file password authentication では、基本的にデータベースディレクトリ
($PGDATA)にパスワードファイルを用意し、それを使ってユーザ認証を行います。
host unv 192.168.0.1 255.255.255.255 password passwd
上記の例では、unv というデータベースに対して、192.168.0.1 のホストからのみ
接続を許可し、ユーザは $PGDATA/passwd を使って認証を行います。
認証用のパスワードファイルは、pg_passwd コマンドで作成します。pg_passwd は
postgres ユーザで実行します。
% cd $PGDATA
% pg_passwd passwd
File "passwd" does not exist. Create? (y/n): y ←最初だけ聞かれます。
Username: sakai ←認証の対象となるユーザ名
New password: ←パスワードを入力
Re-enter new password: ←確認のため、パスワードをもう一度入力
既に登録済みのユーザのパスワード変更も pg_passwd で行います。
なお、flat file password authentication では、ユーザが入力したパスワードは、
rlogin や telnet と同様に、そのままの形でネットワーク上を流れます。
そのため、次の crypt authentication では、パスワードが暗号化されてから
ネットワークに送出されるので、より安全です。
crypt authentication
PostgreSQL のシステムテーブル pg_user と pg_shadow を使って認証を行う方法です。
実際にユーザ名とパスワードが格納されているのは pg_shadow の方で、
このテーブルは postgres ユーザ以外はアクセスできません。
pg_user は pg_shadow から作られ、一般ユーザもアクセスできますが、
パスワードカラムは "****" となっていて、パスワードを読み取ることは
できません。
crypt authentication を使うには、pg_hba.conf で "crypt" というキーワードを
使います。
host unv 192.168.0.1 255.255.255.255 crypt
pg_shadow テーブルにユーザをパスワード付きで登録するには、postgresユーザで
以下のようにします。
% psql -n データベース名 ← データベースに接続します。
以下のSQL文を実行 (データベース名を test とします)
test=> create user sakai with password "foo";
既に登録済みのユーザのパスワードを変更するには、以下の SQL 文を実行します。
test=> alter user sakai with password "bar";
テーブル毎のアクセス権設定
SQL 文の grant/revoke により、select/insert/update/delete/rule の実行権を
ユーザ/グループに対して許可/不許可の設定ができます。SQLの標準では、
テーブルを作成しただけでは、そのテーブルを作成したユーザ以外にはいっさい
アクセスが許されていませんので、必要に応じて他のユーザがアクセスできるように
する必要があります。
- grant
grant は、select/insert/update/delete の実行権を与えます。基本的な構文は
以下のようになります。
grant 権限の種類 on テーブル名 to 対象;
「権限の種類」は、all/select/insert/delete/rule のどれかです。権限は , で
区切って複数列挙することができます。all を指定すると全ての権限が対象と
なります。
「テーブル名」は、許可の対象となるテーブルです。やはり , で区切って
複数のテーブルを列挙できます。
「対象」は、許可の対象となるユーザです。public とすると、全てのユーザが
対象となります。例えば、
test=> grant select on shinamono to public;
で、全てのユーザが shinamono テーブルを select できるようになります。
個々のユーザに対していちいち grant するのが面倒な場合には、複数のユーザを
まとめて「グループ」を定義し、そのグループに対して許可する方法もあります。
このためにはまずグループを定義する必要があります。例えば、
ユーザfoo(ユーザID 1234)と、ユーザbar(ユーザID 1235)を group1 という
グループに所属させるには、
test=> insert into pg_group(groname,grosysid,grolist) values('group1',100,'{1234,1235}');
ここで 100 は group1 に割り当てたグループIDです。
次に grant 文を使って検索を許可します。
test=> grant select on shinamono to group group1;
- revoke
grant とは逆に、権限を取り下げるには revoke を使います。
test=> revoke 権限の種類 on テーブル名 from 対象;
権限の種類、テーブル名、対象の指定の仕方は grant と全く同じです。
基本的な使用方法
psql
PostgreSQL では、psql という SQL インタプリタを利用するのが最も基本的な
使い方です。psql は起動されると SQL 文の入力待ちとなります。SQL 文が入力
されるとそれをバックエンドに転送し、実行結果がバックエンドから戻ってくると
それを表示します。psql は会話的に使うことを想定されていますが、多くの UNIX
コマンドのように、シェルスクリプトなどからバッチ的に実行することもできます。
psql の基本的な使い方は、
% psql データベース名
です。データベース名を省略すると、ユーザ名と同じデータベース名を指定したものと
みなします。
データベースは createdb によってあらかじめ作成済みでなければなりません。
どんなデータベースがあるか分からないときは、
% psql -l
で、データベースの一覧表を表示できます。
また、日本語を使用する場合は、
% psql -n データベース名
とします。しかし、この場合は、bash や tcsh と同じようなコマンドヒストリや
行編集の機能が使用できなくなるため、注意が必要です。
また、SQL文をバッチ的に実行したい場合は、
% psql データベース名 < コマンドファイル
のようにして、SQL文を記述したコマンドファイルを入力として与えます。
この他にも psql には、他にも様々な起動オプションがあります。代表的なものを
以下に示します。
- -c query
SQL文を query(クエリー)で与えます。通常、-qオプションと併用し、
シェルスクリプトの中から psql を呼び出します。
- -e
バックエンドに送った SQL文を表示します。
- -E
バックスラッシュコマンドも含めて、バックエンドに送った SQL 文を表示します。
- -f filename
filename からの入力を受け付けます。
- -h hostname
ホスト hostname のバックエンドに接続します。
- -H
出力が HTMLテーブルになります。CGIなどに使うと便利です。一緒に
-Tオプションを使うと、< table > タグへのオプションが指定できます。
- -l
データベースの一覧を表示して終了します。対話的な使い方はできません。
- -o filename
出力結果を filename に格納します。
- -p port
接続の際に使用するポート番号を指定します。デフォルトは 5432 です。
- -u
データベースへの接続時にユーザ名とパスワードを聞かれます。
テーブルの作成
SQL 文では、テーブルの作成は "create table" を使用します。例えば、
「品名」「値段」をそれぞれ "hinmei"と"nedan"カラムとして持つ
"shinamono"テーブルを作成するには、以下のようになります。
データベース名を test とします。
test=> create table shinamono (hinmei text, nedan int);
CREATE
ここで、text は文字列のデータ型、int は整数のデータ型です。
データ登録
テーブルが作成できたら、データ登録を行います。insert を用いて、
以下のように行います。
test=> insert into shinamono values ('みかん',100);
INSERT 18419 1
test=> insert into shinamono values ('りんご',150);
iNSERT 18420 1
test=> insert into shinamono values ('メロン',2500);
INSERT 18421 1
注意点として、文字列は '' で囲む必要があります。
データ表示
データを登録したので、テーブルの中身を表示してみます。データの表示には
select を用いて、以下のように行います。
test=> select * from shinamono;
hinmei|nedan
------+-----
みかん| 100
りんご| 150
メロン| 2500
(3 rows)
ここで、select の次は「ターゲットリスト」と呼ばれ、どの項目を表示するかを
指定します。*を指定すると、上記のようにテーブルの全項目を表示します。
update
delete
テーブルの中身を削除するには、delete を用います。
例えば、みかんの行を削除するには以下のように行います。
test=> delete from shinamono where hinmei = 'みかん';
DELETE 1
drop table
delete では、テーブルの中身は消去できますが、テーブルは残ります。
テーブル自体を削除するには、drop table を用いて、以下のように行います。
test=> drop table shinamono;
DROP
copy
ヘルプ機能
SQL の簡単な使い方を、psql のヘルプ機能で知ることができます。\h と入力する
ことにより、SQL の一覧が表示されます。
特定の SQL コマンドのヘルプを見るには、
\h コマンド名
と入力します。
pgaccess
PostgreSQLには、pgaccess という Tcl/Tk で作成されたデータベース管理ツールが
付属しています。pgaccess を使用するためには、事前に Tcl/Tk をインストール
しておく必要があります。Tcl/Tk は、最近の Linux や FreeBSD では、最初から
バージョン8.0系+日本語パッチ済みの Tcl/Tk がインストールされています。もし、
インストールされていない場合は、パッケージなどよりインストールします。
Tcl/Tk をインストールしたら、次は、libpgtcl をインストールします。
まず、postmaster のプロセスを停止します。
# ps ax | grep postmaster
372 ? S 0:00 /usr/local/pgsql/bin/postmaster -S -i
# kill 372
次に、PostgreSQL のソースファイルを展開したディレクトリに移動し、
postgres ユーザになります。
% cd $DIR/postgresql-6.5.3/src
% su - postgres
Password
$
以下のように configure を実行します。
$ ./configure --with-mb=EUC_JP --with-tcl --with-tclconfig=/usr/lib --with-tkconfig=/usr/lib
--with-tclconfig で TclConfig.sh があるディレクトリを、
--with-tkconfig で TkConfig.sh があるディレクトリを指定します。
上記の configure で以下のような行が出力されることを確認します。
checking for tclConfig.sh... /usr/lib/tclConfig.sh
checking for tkConfig.sh... /usr/lib/tkConfig.sh
きちんと出力されていれば、以下のようにしてインストールを行います。
% gmake
% su
Password:
# gmake install
以上で libpgtcl のインストールは終了です。
/usr/local/pgsql/lib に libpgtcl.a と libpgtcl.so が、
/usr/local/bin に pgtclsh と pgtksh がインストールされていることを
確認します。
次に、pgaccess をインストールします。PostgreSQLのソースディレクトリの
bin/pgaccess ディレクトリに移動し、そこにある pgaccess ファイルを編集します。
% cd $DIR/postgresql-6.5.3/src/bin/pgaccess
% vi pgaccess
以下の部分を環境に合わせて変更します。
PATH_TO_WISH=/usr/bin/wish8.0jp
PGACCESS_HOME=/usr/local/pgsql/lib/pgaccess
編集後、このファイルを postgres ユーザで /usr/local/pgsql/bin にコピーします。
% su postgres
Password:
$ cp pgaccess /usr/local/pgsql/bin
pgbash
pgbash は、bash-2.03 のシェルに PostgreSQL用の直接SQLや埋め込みSQLの
インターフェースを組み込んだシェルです。ログインシェルやサブシェルとしてや
シェルスクリプトの実行用のシェルとして使用することができます。
pgbashでは、SQL文を直接入力することができます。SQL文は、1つのシェルコマンド
として扱われるので、SQL文とパイプライン、リダイレクション、
バックグラウンドジョブ命令を組み合わせて実行することができます。また、
exec_sql コマンドを使用すると、SQL文に各種オプションをつけて実行できます。
それでは、pgbashをインストールします。以下のURL
http://www.psn.co.jp/PostgreSQL/pgbash/index-j.html
より、pgbash を入手します。今回は pgbash-2.1.tar.gz を入手しました。
また、pgbash は、bash-2.03 のソースファイルも必要なので、以下のURL
ftp://ftp.gnu.org/gnu/bash/
より、bash-2.03.tar.gz を入手します。
pgbash をインストールするには、PostgreSQLがあらかじめインストールされている
必要があります。なお、pgbash は、PostgreSQLが /usr/local/pgsql ディレクトリに
インストールされていることを前提にしています。これ以外のディレクトリ
(例えば xxx/pgsql)にインストールしてある場合は、以下のようにシンボリックリンク
を張ります。
# ln -s xxx/pgsql /usr/local/pgsql
入手した pgbash-2.1.tar.gz を適当なディレクトリで解凍・展開し、
ディレクトリを移動します。
% tar xvfz pgbash-2.1.tar.gz
% cd pgbash-2.1
pgbash-2.1 ディレクトリの中で bash-2.03.tar.gz を解凍・展開します。
% tar xvfz ../bash-2.03.tar.gz
これで、pgbash-2.1 ディレクトリの下に、bash-2.03 ディレクトリが作成されます。
次に、bash-2.03 にパッチを当てます。pgbash-2.1/patch ディレクトリの中で
make を実行します。
% cd patch
% make
その後、pgbash-2.1/src ディレクトリに移動して、configure、make、make install
でインストールします。
% cd ../src
% ./configure
% make
% su
Password:
# make install
上記により、"pgbash" が /usr/local/bin に、"pgbashrc" が /etc にインストール
されます。以上で pgbash のインストールは終了です。
次に pgbash を使うための以下のような環境設定を行います。
- ログインシェルとして使用する場合は、vipw を実行して、パスワードファイルの
ログインシェルを /usr/local/bin/pgbash に変更します。
- FTPなどを使用する場合は、/etc/shells に /usr/local/bin/pgbash
を追加します。
- Linux など /etc/ld.so.conf の設定が必要な OS は、/etc/ld.so.conf に
/usr/local/pgsql/lib を追加して、/sbin/ldconf を実行します。
OpenZOLAR
OpenZOLARとは、
インターナショナルシステムリサーチが開発したWeb-DB連携ソフトウェアZOLARの
FreeBSD/Linux対応版で、商用/非商用を問わず無料で利用できます。対応データベース
サーバとしては PostgreSQLが挙げられます。
以下のURL
http://isr.co.jp/open_zolar/
より、使用するOS(FreeBSD or Linux)に合わせたファイルをダウンロードします。
ここでは、OSに Vine Linux 1.1 を、データベースサーバに PostgreSQL-6.5.3を
使用しているので、openzolar500_Linux_libc6.tgzを入手しました。
入手後、適当なディレクトリで解凍・展開して、ディレクトリを移動します。
% tar xvfz openzolar500_Linux_libc6.tgz
% cd openzolar500_Linux_libc6
ドキュメントが docs ディレクトリ以下に、バイナリが cgi-bin ディレクトリ以下に
あります。バイナリを、Apache の CGI実行許可のあるディレクトリ
(ここでは /usr/local/apache/htdocs/cgi-bin/)にコピーします。
具体的には以下のように行います。
% su www (wwwはWebの管理ユーザ)
Password:
$ install -c -m 444 cgi-bin/zcall.so /usr/local/apache/htdocs/cgi-bin/
$ install -c -m 444 cgi-bin/zfunc.so /usr/local/apache/htdocs/cgi-bin/
$ install -c -m 644 cgi-bin/zolar.conf /usr/local/apache/htdocs/cgi-bin/
$ install -c -m 555 cgi-bin/zolar /usr/local/apache/htdocs/cgi-bin/
次に、OpenZOLARの設定ファイル zolar.conf を環境に合わせて編集します。
ここでは、以下のような内容に編集しました。
DefaultDatabase openzolar
ErrorUserNotify 100
ErrorLogFile /usr/local/apache/htdocs/cgi-bin/zolar.log
DefaultPage 1
BuiltinImage 1
OutputKanjiCode EUC
InputKanjiCode EUC
DatabaseKanjiCode EUC
UserName www
Password http
LoadLibrary /usr/local/apache/htdocs/cgi-bin/zcall.so
LoadLibrary /usr/local/apache/htdocs/cgi-bin/zfunc.so
LoadLibrary /usr/local/apache/htdocs/cgi-bin/zhttp.so
また、OpenZOLAR のマニュアルを入手します。上記の URLに置いてあるため、
以下のようにして行います。
% wget http://www.isr.co.jp/~muc/openzolar/release/openzolar40_manual.tar.gz
入手後、適当なディレクトリで解凍・展開して、ディレクトリを移動します。
% tar xvfz openzolar40_manual.tar.gz
% cd openzolar40_manual
このディレクトリ以下の htdocs/zolar40 と cgi-bin/zolar40 にそれぞれの
マニュアルとテンプレートファイルがあるので、これらを以下のようにして
Apacheの各ディレクトリへコピーします。
% su www
Password:
$ cp -r htdocs/zolar40 /usr/local/apache/htdocs/
$ cp -r cgi-bin/zolar40 /usr/local/apache/htdocs/cgi-bin/
インストールしたマニュアルは
こちら
になります。
以上で OpenZOLAR のインストールは終了です。正しくインストールできているか
どうか確認するには、Webブラウザで
http://サーバ名/cgi-bin/zolar/version.html
にアクセスしてみます。
このようなページが表示されるはずです。
OpenZOLARを使用するためには、OpenZOLARが理解できるタグを加えた zhtml ファイルを
用意する必要があります。zhtmlファイルのテンプレートやサンプルファイルについては
先程インストールしたマニュアルを御覧ください。
PHP
PHPはHTML中に埋め込むプログラミング言語です。PHPは、PostgreSQL のような
多くのデータベースとの連携が可能な言語なので、データベースと連携した Webページ
の作成の場面でよく利用されます。機能的には CGI と同様のことが可能ですが、
PHPは Apache のモジュールとして動作させることができるので、CGIに比べて
起動時のオーバーヘッドが少なくてすみます。
PHPのオフィシャルWebページは、以下になります。
http://www.php.net/
また、日本での情報については、以下になります。
http://www.cityfujisawa.ne.jp/~louis/apps/phpfi/index.html
また、日本PHPユーザ会の公式Webページは以下になります。
http://www.php.gr.jp/
今回は、以下の PHP国際化プロジェクトの Webページ
http://php.jpnnet.com/
より、PHPの国際化版である php-3.0.15-i18n-ja.tar.gz を入手しました。
また、Apache のソースファイルも、以下のURL及びそのミラーサイトより、
事前に入手しておきます。
http://www.apache.org/
今回は、apache_1.3.12.tar.gz を入手しました。
Apacheのソースファイル(apache_1.3.12.tar.gz)と、
PHPのソースファイル(php-3.0.15-i18n-ja.tar.gz)を同じディレクトリに
置きます。
まず、Apache のインストールを行います。以下の手順で行います。
% tar xvfz apache_1.3.12.tar.gz
% cd apache_1.3.12
% ./configure --enable-module=so
% make
% su
Password:
# make install
次に、PHPのインストールを行います。以下の手順で行います。
% cd ..
% tar xvfz php-3.0.15-i18n-ja.tar.gz
% cd php-3.0.15-i18n-ja
% ./configure --with-pgsql --with-apache=../apache_1.3.12 --enable-track-vars --with-apxs=/usr/local/apache/bin/apxs --enable-i18n --enable-mbregex
% make
% su
Password:
# make install
次に、PHPの設定ファイルをコピーします。以下のように行います。
# cp php3.ini-dist /usr/local/lib/php3.ini
php3.ini ファイルについて、以下の記述を追加、または変更します。
# vi /usr/local/lib/php3.ini
以下の記述を追加、または変更
i18n.http_output = PASS
i18n.internal_encoding = EUC-JP
i18n.script_encoding = auto
i18n.http_input = auto
また、Apache の設定ファイル(/usr/local/apache/conf/httpd.conf)を編集します。
# vi /usr/local/apache/conf/httpd.conf
以下の記述のコメントアウトを外し、有効にします。
AddType application/x-httpd-php3 .php3
AddType application/x-httpd-php3-source .phps
以下のように DirectoryIndex に index.php3 を追加します。
DirectoryIndex index.html index.php3
以下の記述を追加、または変更します。
LoadFile /usr/local/pgsql/lib/libpq.so
SetEnv LD_LIBRARY_PATH /usr/local/pgsql/lib
LoadModule php3_module /usr/local/apache/libexec/libphp3.so
編集後、Apache を起動します。以下のように行います。
起動
# /usr/local/apache/bin/httpd
再起動
# kill -HUP `cat /usr/local/apache/logs/httpd.pid`
Apache の起動後、PHPのテストを行います。Apacheのドキュメントルート
(/usr/local/apache/htdocs/)以下に test.php3 という名前で、以下の内容の
ファイルを作成します。
< ?php
phpinfo();
? >
ブラウザで http://localhost/test.php3 にアクセスし、
このように
画面が表示されれば、PHPが Apache のモジュールとしてインストールされました。
また、PHPの実行版をインストールするには、以下のようにします。
% cd $DIR/php-3.0.15-i18n-ja
% make clean
% ./configure --with-pgsql --enable-force-cgi-redirect --enable-track-vars --enable-i18n --enable-mbregex
% make
% su
Password:
# make install
以上で PHP の実行バイナリが /usr/local/bin にインストールされます。
ODBC
ODBC(Open DataBase Connectivity)とは、PostgreSQLのような
データベース管理システム(DataBase Management System,DBMS)のための共通の
インターフェースです。ODBCによって、異なる仕様の様々な DBMS が統一された
プログラミングインターフェースで使用できます。
PostgreSQL用の ODBCドライバとしては PostgreSQL ODBC Driver が代表的です。
PostgreSQL の 6.2〜7.0に対応しています。この PostgreSQL ODBC Driver の
オフィシャルサイトが以下のURLにあります。
ftp://ftp.postgresql.org/pub/odbc/index.html
上記のURLより、最新版のパッケージ(ファイル名は postdrv.exe)を入手します。
入手した postdrv.exe を Windows マシンで実行し、質問に答えるだけでインストール
できます。インストールの途中の Select Components 画面では、
"Do not install Driver Manager"を選択します。
上記の作業で PostgreSQL ODBC Driver のインストールは出来たのですが、
このままでは日本語が扱えません。そのため、以下のURL
http://www.interwiz.koganei.tokyo.jp/software/PsqlODBC/index.html
より、日本語に対応させるためのパッチファイル"PSQLODBC.DLL"を入手し
(圧縮されています)、C:\WINDOWS\SYSTEM ディレクトリにコピー(英語版を上書き)
します。以上で ODBCドライバのセットアップは終了です。
次に PostgreSQLデータベースが利用できるように ODBC の設定を行います。
ます、PostgreSQLサーバについて、以下の項目を確認します。
- ネットワーク経由で利用することになるため、postmaster の起動には、
-i オプションをつける
- PostgreSQLのユーザ認証方法を平文パスワード認証にします。具体的には
data/pg_hba.conf ファイルの第5フィールド(USERAUTH)を"password"にします。
- PostgreSQL ODBC Driver 経由で利用するユーザとパスワードを設定します。
上記の項目を確認した後、Windowsマシンのコントロールパネルから、
ODBCデータソースをダブルクリックして ODBCデータソースアドミニストレータを開き、
PostgreSQLデータベースにアクセスするための新しいデータソースを作成します。
最初にデータソースの種類を選びます。以下の3種類があります。
- ユーザDSN
Windowsのログインユーザごとに保管されるデータソースです。
- システムDSN
システム全体で共通なデータソースです。
- ファイルDSN
通常のファイルとして保管されるデータソースです。ファイルとして保管される
ので、別のPCにコピーして利用することも可能です。
データソースの種類を決めたら、ODBCデータソースアドミニストレータ画面の上部の
タブから、該当するページを開き、「追加」をクリックします。次の
データソースの新規作成画面で、PostgreSQL を選び、「完了」をクリックします。
次に、PostgreSQL Driver Setup 画面が表示されます。ここで、
PostgreSQLデータベースにアクセスするために必要な情報を入力します。
Data Source:欄、および Description:欄には、作成するデータベースの名称と
その説明を指定します。なお、Data Source:欄以外は空欄にしておくことも
可能です。
また、PostgreSQL ODBC Driver の細かな設定を行うには、
この画面(PostgreSQL Driver Setup画面)の「Driver」をクリックし、
Advanced Options (Driver)画面を開きます。各項目の内容は省略します。
推奨設定を以下に示します。
オプション
| 推奨設定
|
Disable Generic Optimizer
| 理想はオフ、PostgreSQLサーバのオプティマイザ(GEQO)を使用しないようにします。
|
CommLog
| オフ
|
KSQO(Keyset Query Optimization)
| オン
|
Read Only (Default)
| オフ、新規作成データソースの Read Only オプションの初期値を指定します。
|
Recognize Unique Indexes
| オン
|
Parse Statements
| オン、オンの場合、PostgreSQLサーバからレコード内容を取得した際に、より充実したカラム内容(精度など)をアプリケーションに報告します。
|
Use Declare/Fetch
| オフ
|
Cancel as FreeSmt (Exp)
| オフ
|
Unknown Sizes
| 通常は Maximum
|
Text as LongVarChar
| 理想はオン
|
Unknowns as LongVarChar
| 理想はオン
|
Bools as Char
| 理想はオフ
|
Cache Size
| 100
|
Max VarChar
| 254
|
Max LongVarChar
| 4094
|
Sys Table Prefixes
| dd_;
|
Connect Settings
| PostgreSQLデータベース接続時に毎回実行したいSQL文を指定します。
|
また、データソースの動作設定を行うには、
この画面(PostgreSQL Driver Setup画面)の「DataSource」をクリックし、
Advanced Options (PostgreSQL)画面を開きます。各項目の内容は省略します。
推奨設定を以下に示します。
Read Only
| オフ、オンにした場合、レコードの更新をドライバレベルで禁止します。
|
Row Versioning
| オフ、レコードの更新処理中に他のユーザによって該当レコードが更新されたかどうかの判断材料を与えます。
|
Show System Tables
| オフ、システムテーブル("pg_"で始まるテーブルなど)を利用できるようにします。
|
Protocol
| PostgreSQLのバージョンに合わせます。6.5.xは 6.4とします。
|
Show Column
| オフ、oidシステムカラムを利用できるようにします。
|
Fake Index
| oidシステムカラムに固有インデックスがあるように見せかけます。
|
Connect Settings
| PostgreSQLデータベース接続時に毎回実行したいSQL文を指定します。
|
以上で PostgreSQL ODBC Driver の設定は完了です。
適当な Windowsアプリケーションから、PostgreSQLデータベースサーバにアクセス
できることを確認します。例として、Microsoft Access を取り上げます。
Microsoft Access を起動し、
「ファイル」→「外部データの取り込み」→「テーブルのリンク」を選び、リンク画面
を表示します。そこで、「ファイルの種類」欄から、"ODBC Database ()"を選び、
データソース選択画面に切替えます。そこで、作成したデータソース
(ファイルデータソース or コンピュータデータソース)を選び、作成したデータベース
を開きます。
戻る
sakai@oak.eg.t.kanazawa-u.ac.jp
Last modified: Mon Aug 21 03:32:04 JST 2000