ギゾネット 2001.12.28更新

PostgreSQLインストール(JDBC編)


強力なデータベースPostgreSQLをJavaで使えるようにJDBCを作って、同時にインストールもしてみます。
(後からJDBC作ることも出来ますが、面倒なので一括してやってしまいます)
Java Servletでウェブアクセスもできますね。
使用したのはFreeBSD4.4-RELEASEで、既にJava 2がインストールされているものとします。
PostgreSQLはバージョン7.1.3をインストールしました。
PostgreSQLのインストールにあたっては、必ず、マニュアルや以下のウェブページに目を通しておいてください。

マニュアル:http://osb.sra.co.jp/PostgreSQL/Manual/
インストール全般:http://osb.sra.co.jp/PostgreSQL/7.1/install.html
JDBC:http://osb.sra.co.jp/PostgreSQL/7.1/jdbc.html

準備
adduserコマンドまたは/stand/sysinstallでpostgresユーザーを作ります。
postgresユーザーでPostgreSQLをインストールします。
ここでは/home/postgresをホームディレクトリとしました。
また、ログインシェルはcsh(tcsh)で説明していきます。
# adduser


PostgreSQL7.1.3のパッチが当たったソースを持ってきます。
(とりあえず/home/postgresに置いておきます)
ftp://ftp.sra.co.jp/pub/cmd/postgres/7.1.3/patches/postgresql-7.1.3-patched.tar.gz

上記のソースからJDBCを作成するためには、JakartaプロジェクトのAntが必要になります。
Antはバイナリでインストールできますので、バイナリで取ってきましょう。
http://jakarta.apache.org/builds/jakarta-ant/release/v1.4.1/bin/jakarta-ant-1.4.1-bin.zip

先に、Antをインストールします。
ここでは、取ってきたAntのバイナリを、/usr/localに置きます。rootで作業します。

# cp jakarta-ant-1.4.1-bin.zip /usr/local/
# cd /usr/local/
# unzip jakarta-ant-1.4.1-bin.zip

ファイルが展開されてAntのインストールは終了です。
次にantに実行権を付けます。

# chmod 755 /usr/local/jakarta-ant-1.4.1/bin/ant


PostgreSQLのインストール
次に、PostgreSQLのインストール先ディレクトリを作成します。rootで行います。

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


PostgreSQLのコンパイル作業場所を作りましょう。
(/home/postgresの中でやっても構いませんが、ここでは一般的な/usr/local/srcの中でやることとします。)
# mkdir /usr/local/src/postgresql-7.1.3
# chown postgres:postgres /usr/local/src/postgresql-7.1.3


ここからは、postgresユーザーで作業を行います。
PostgreSQLのコンパイル時に、さっきインストールしたAntが参照できるように
/home/postgres/.cshrc
にパスを追加します。
set path = (で始まる行のパスがいろいろ書いてあるところに、
/usr/local/jakarta-ant-1.4.1/bin
を追加してください。


一応ロケールも日本語を使うように明示しておきましょう。
(ここでの作業においては必須ではないような気がしますが、あとでpsqlで日本語を扱うときには必要になりますので書いておきます。)
同じく、/home/postgres/.cshrc
の中に以下の行を追加しておいてください。
setenv LANG ja_JP.EUC


それではpostgresql-7.1.3-patched.tar.gzを展開して、コンパイルしましょう。
configureはJDBCを作成と、マルチバイト文字(EUC-JP)が使えるようにするオプションを付けます。
% source ~/.cshrc
% tar zxvf postgresql-7.1.3-patched.tar.gz -C /usr/local/src
% cd /usr/local/src/postgresql-7.1.3/
% ./configure --enable-multibyte=EUC_JP --with-java
% gmake
% gmake install


エラーが出ないで終了すれば、インストールは完了です。

設定と起動
JDBCはどこに出来たかというと、
/usr/local/pgsql/share/java/postgresql.jar
にあるはずです。どこかにコピーしてもいいですが、ここではデフォルトの場所で使うことにします。
PostgreSQLが使えるように、パスと環境変数を追加しておきましょう。

先ほどのように、~/.cshrcファイルの
set path = (で始まる行に、
/usr/local/pgsql/bin
setenv CLASSPATHで始まる行に、
/usr/local/pgsql/share/java/postgresql.jar
を足しておきます。
さらに
setenv PG /usr/local/pgsql
setenv PGLIB $PG/lib
setenv PGDATA $PG/data
setenv LD_LIBRARY_PATH $PGLIB


以上書き加えたら、データベースクラスタを作ります。
% source ~/.cshrc
% initdb


これであとはpostmasterを起動させれば、とりあえずは完了です。
Servletなどで使うときは、-iオプションを付けないと接続できないので以下のようにします。
-Sでデーモンになります。
%postmaster -i -S

-iオプションは、外部ホストからの接続を許します。
外部ホストからの接続の設定は、/usr/local/pgsql/share/pg_hba.confで行います。
このファイルが無いときには、ローカルホストだけの接続を許可するようになっているようですから、特に変更は要らないようです。

Tips
ここで作ったJDBCは日本語を使えますが、Javaでコーディングするときに文字コードを意識しないと、文字化けに悩まされます。
例えば、EUC-JPでコーディングしていて、PostgreSQLに格納する文字コードがユニコードだとしたら、ユニコードに変換してからデータベースに格納する必要があります。その逆も然りです。