ホーム > 技術関連情報 > postgreSQLセットアップ例

postgreSQLセットアップ例

Javaサーブレットからデータベースにアクセスするため、postgreSQLをセットアップした。 (だから、ここにあるのは、Javaで使うという前提のもの) その時に書いたメモを載せてみたのだが、みんなそれぞれ環境が違うと思うし、 必ずしもここにあるようにはいかないかもしれないけど、何かの参考になればと。
OSは、Red Hat Linux release 6.1、postgreSQLのバージョンは、7.1.2。
(古いバージョンの事例ですいません。でも、何かの役にたてば・・・)
セットアップする際に苦労したというか迷った点はたった1つ。日本語の問題だ。 文字コード(Char Set)をどうするか何度もやり直してしまった。 このデータベースを使うシステムでは、PCで作成したクエリーが書かれたファイルから初期値を インサートしておいて、その後、HTMLのフォームに入力されたものをJavaサーブレットが 受け取ってデータベースにセーブしたり、更新したり、その逆で読み出したりするものだ。 つまり、日本語がPCで作成したファイルからとHTMLからと両方から入ってくる。 結局、できてしまえばたいしたことはなかったんだけど・・・。 ほんと、日本語には嫌気がさすね。できれば英語圏に生まれたかったよ・・・。


■ rootでログイン

事前に、postgresql-7.1.2.tarとjakarta-ant1.3をダウンロードしておいて、 それから、Linuxに「postgres」ってユーザも作成しておく。
(JDKとTomCatなどのサーブレットエンジンは、既に設定済みとする)

※postgreSQL用にディレクトリを作成

 /usr/local/pgsqlと/usr/local/src/postgresql-7.1.2を作成する。
$ mkdir /usr/local/pgsql
$ mkdir /usr/local/src/postgresql-7.1.2

 もし、再インストールするのなら、前のは全部消しておいた方がいい。
$ rm -R -f /usr/local/pgsql
$ rm -R -f /usr/local/src/postgresql-7.1.2

※ディレクトリのownerとgroupを「postgres」に変更

$ chown postgres:postgres /usr/local/pgsql
$ chown postgres:postgres /usr/local/src/postgresql-7.1.2

※jakarta-antをインストールする

postgreSQLをコンパイルする前にjakarta-ant1.3を/usr/localにて解凍


■ postgresでログイン

※jakarta-antの環境変数を.bashrcに追加

 /usr/local/pgsqlと/usr/local/src/postgresql-7.1.2を作成する。
export ANT_HOME=/usr/local/jakarta-ant-1.3
export PATH=${PATH}:${ANT_HOME}/bin

※環境変数の追加を有効にする

$ source ~/.bashrc

※postgreSQLを解凍

$ tar xfvz postgresql-7_1_2_tar.tar

※コンパイルの環境を指定する

$ ./configure --enable-multibyte=EUC_JP --with-java
 --with-javaでJDBCドライバも一緒にコンパイル、作成されるように指定する。

※postgreSQLのコンパイルとインストール

$ make
$ make check
$ make install

※postgreSQLを使用するユーザの.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"


■ サーバ作成完了

※データベースの初期化

$ initdb

※JDBCドライバをコピーする

 エンジンがTomCatなら、以下のとおりにコピーする
それ以外でも、CLASSPATHがきってあるディレクトリにコピーする。
$ cp /usr/local/src/postgresql-7.1.2/src/interfaces/jdbc/jars/postgresql.jar $TOMCAT_HOME/lib

※サーバの起動

$ postmaster -i &
 -i は、他のホストからのアクセスを許可する。& のかわりに -S オプションでもいい。


■ セットアップ終了

あとは、ユーザを作成して、データベースを作成して、クエリーを走らせるだけ。

結局、文字コードは、Unicodeとかにせず、EUC_JPにした。 PCで作成したクエリーファイルは、サーバにFTPする際に、EUCに変換するようにした。 HTMLからの入力データは、サーブレットでUnicodeに変換してJDBCドライバに渡すようにした。 JDBCドライバは、データベースの文字コードが何であれ、データを取り出す時は、 Unicodeにして渡してくれるようだ。だから、逆にデータを入れる時も受け取った データはUnicodeだとして動作しているみたいだ。なので、HTMLからGETした SJISをこちらで(サーブレットで)Unicodeに変換してからJDBCに渡したら 万事うまくいった。

参考までに、postgreSQLの環境変数にPGCLIENTENCODINGというのがある。 そこに文字コードを指定すると、データベース自体の文字コードは変わらないが、 クライアント側はそこで指定した文字コードであると認識し、変換してくれる。 JDBCとかを使わずに、PCで作成したクエリーファイルをそのまま無変換で サーバにアップロードし、日本語文字列などをインサートしたいという場合は、 便利だと思う。この指定を使いたい時は、.bashrcに以下のように追加する。

export PGCLIENTENCODING=SJIS