しいしせねっとわーく EDiCube MW【300x75】 Amazon.co.jp アソシエイト
[PostgreSQL]

PostgreSQL 7.4をインストールする

PostgreSQLの7.4がリリースされました。インストールスクリプトなど書いてみていたので、今回はそれを7.4用になおしてみました。

ここでは標準ディレクトリ /usr/local/pgsql へ Java対応でインストールしてみます。 他で紹介されているインストール方法よりセキュリティに厳しく、という曖昧な目標で。

対象

VIne Linux 2.6r1、その他Linux/Unix系OSに最新のPostgreSQLをなんとなく最初からインストールしてみたい人

必要なもの

Java 2 SDK 1.4ぐらい (→Java.Sun.Com ダウンロードへ)
Jakarta Ant 1.5以降 (→Apache Ant 設定メモ)
インストールするスクリプト

インストール手順

インストール作業は root で行います。なぜでしょう。postgres のユーザで postgres の実行ファイル類を更新されてしまわないようにするためです。

postgresql.setup をつかう場合は、

# postgresql.setup install

とするだけです。たぶん。J2SDKとAntはインストールされている必要があります。
http://siisise.net/pgsql/ の続きへ。

ふつうに1つずつ実行するには、

# tar zxvf postgresql-7.4.2.tar.gz
# cd postgresql-7.4.2
# ./configure --enable-multibyte=EUC_JP --with-java

必要に応じて、--with-opeenssl=/usr --with-perl なども追加できます。
PostgreSQL国際化対応パッチなども追加することができるようです。

オプションの意味

--enable-multibyte=EUC_JP または Unicode
デフォルトのDBの文字コードをEUC-JPにしています。
文字コードを指定しない場合は、7.3から--enable-multibyte自体が不要になったようです。
Unicodeを指定することもできますが、psqlコマンドなどを使う場合に文字化けするので、コンソールがutf-8で使える場合(WindowsからPuTTYなどで接続できる環境)に限って設定した方がいいです。
--with-java
Java用のJDBCドライバもmake します。Apache Antが必要です。
JDBCドライバは、JDK1.1用 J2SDK1.2用(JDBC2.2)、J2EE用、J2SDK1.4用(JDBC3.0)の4種類がmake できるようなので、それぞれ必要な環境でmake するのがいいようです。
--with-perl
perl 用のライブラリをmakeします。
--with-openssl
SSLをつかえるようにします =で場所を指定することもできるのかな。
その他
いろいろあります

(古い postgresql.jar が残っていないことを確認してから)

# make
# make install

/usr/local/pgsql 配下にインストールされます。
JDBCドライバは /usr/local/pgsql/share/java/postgresql.jar にできてます。Java の jre/lib/ext 等にコピーしてしまってもいいです。

JDBCドライバだけmakeする場合は、src/interfaces/jdbc 内でmakeします。antを直接使うことはできません。以前のJDBCドライバがCLASSPATH上などにあると、うまくmake?されません。

参考

データエリアの準備

PostgreSQL本体は root でインストールできました。ここからはPostgreSQL管理専用のユーザを作ってデータの設定をします。これ以前のものもPostgreSQL用のユーザで作業してもかまいませんが、make install 時のアクセス権限に注意する必要があります。

PostgreSQL管理用UNIXユーザの作成

# adduser postgres

データ用ディレクトリの準備

# mkdir /usr/local/pgsql/data

好きな場所につくることができますが、通常はここでいいようです。/home/postgres/data などに作ってもかまいません。UNIX標準のディレクトリ構成にあわせるのなら/usr は書き込みしないものを置くところなので /var/local/pgsql/data などに変える方がよいです。

# chown postgres:postgres /usr/local/pgsql/data
# chmod 700 /usr/local/pgsql/data
# su - postgres

データ用のディレクトリが準備できたら、これ以降は root での作業はありません。

$ /usr/local/pgsql/bin/initdb -E EUC-JP --no-locale -D /usr/local/pgsql/data

データベースを初期設定します。locale は日本語処理の邪魔になるようなので、ここで外します。ただし、大文字小文字を区別するようになってしまいます。
文字コードはconfigure で指定したもの以外の場合に必要かもしれません。
必要なら data/pg_hba.conf 等を編集します。

環境変数は?

$PG_DATA などの環境変数は、postgres ユーザだけ(initdbとサーバ開始のときだけ)に設定すればいいので今回は設定せずにコマンド上で指定しました。複数サーバを実行する場合などで必要でしようか。

参考
http://osb.sra.co.jp/

起動用ファイルの作成(工事中)

ふたたび root 権限での作業になります。
/etc/rc.d/init.d/ に起動/終了用のスクリプトを書いてみたい。
PostgreSQL 7.2のrpm についてくるファイルを参考に書き換えてみましょうか。

#! /bin/sh

等々 書きます。postgresql.setup がインストーラ兼起動用ファイルとして作ってありますのでこれを使ってもいいです。

書き換えたら、

# chkconfig --add pgsql

で登録します。

起動と停止(修正予定)

起動用ファイルを使わない場合でもpostgres ユーザで、次のようにすると起動できます。

$ /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -o "-i" -l logfile start

または

$ /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data -i >logfile 2>&1 &

1つのpostmaster は1つのディレクトリのデータを管理できます。
内部で複数のデータベースを持つことができます。
-i オプションを付けると、TCPポート5432を開きます。pg_hba.conf のほかに、iptables などでも外部からアクセスできないようにしておきます。
-D で指定するdata ディレクトリの中の postmaster.opts.default というファイルに、postmaster 用のオプションを記述することができます。実行中のpostmaster のオプションは、postmaster.opts というファイルに記録されていますので、間違わないようにしましょう。

$PG_DATA/postmaster.opts.defaultの中身はつぎのような感じに

-i

停止

$ /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data stop

または、postmaster の プロセスを kill -INT します。
通常のkill で止めない方がよいらしいです。

クライアント側の設定

$PATHの設定を /etc/profile などに追加します。

#!/bin/sh
PATH=/usr/local/pgsql/bin:$PATH
export PATH

と書いたファイルを /etc/profile.d/postgresql.sh という名で作って、実行属性をつけておきます。 PG_DATAなどは設定しません。cshを使っている場合は、postgresql.csh というファイルを作らなければなりませぬ。

# chmod +x postgresql.sh

ユーザ用データベースの作成

http://siisise.net/pgsql/ の続きへ。