
PostgreSQLの8.1がリリースされました。今回は8.x系初の挑戦ということもあり、まぁ・・・いろいろと手さぐりしてみました。
ここでは標準ディレクトリ /usr/local/pgsql へ Java対応でインストールしてみます。 他で紹介されているインストール方法よりセキュリティに厳しく、という曖昧な目標で。
VIne Linux 3.2、その他Linux/Unix系OSに最新のPostgreSQLをなんとなく最初からインストールしてみたい人
PostgreSQL 8.2 は Vine Linux 2.xにはインストールできなさそうです。
インストール作業は root で行います。なぜでしょう。postgres のユーザで postgres の実行ファイル類を更新されてしまわないようにするためです。
postgresql.setup (8.2用)をつかう場合は、
VineLinux 4.0ではdevel系のパッケージ4つをインストールしておきます。
# apt-get install readline-devel zlib-devel openssl-devel pam-devel
あとは
# ./postgresql.setup install
とするだけです。たぶん。各develパッケージはインストールされている必要があります。
http://siisise.net/pgsql/ の続きへ。
ふつうに1つずつ実行するには、
# tar zxvf postgresql-8.1.5.tar.gz
# cd postgresql-8.1.5
# ./configure --enable-nls=ja --with-openssl
必要に応じて、--with-opeenssl=/usr --with-perl なども追加できます。
PostgreSQL国際化対応パッチは、8.x系では不要なのかな・・・?
JDBCライブラリは8.xから別に配布されています。
# make
# make install
/usr/local/pgsql 配下にインストールされます。
http://jdbc.postgresql.org/ からダウンロードしましょう。
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とサーバ開始のときだけ)に設定すればいいので今回は設定せずにコマンド上で指定しました。複数サーバを実行する場合などで必要でしようか。
ふたたび root 権限での作業になります。
/etc/rc.d/init.d/ に起動/終了用のスクリプトを書いてみたい。
PostgreSQL 7.2のrpm についてくるファイルを参考に書き換えてみましょうか。
#! /bin/sh
等々 書きます。postgresql.setup (8.1.5の場合)がインストーラ兼起動用ファイルとして作ってありますのでこれを使ってもいいです。
書き換えたら、
# 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の中身はつぎのような感じに。8.2では不要かな?
-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