since 2002/01/01
lastupdate 2003/01/16
   

PostgreSQLをインストール

最初にPotgreSQLをインストールします。
基本的にPostgreSQLのインストールはすべてユーザ: postgres にて行うことになるので、 あらかじめユーザとして postgres を登録しておく必要があります。
また、ここでインストールしているのはバージョン 7.1.3 ですので、他のバージョンでは適合しないかも知れません。

尚、PostgreSQL については こちら でいろいろやっていますので、よろしければごらんください。

実行環境の確認

PostgreSQLをインストールするには、以下の実行環境が必要ですので、まず調べましょう。

  • GNU make (gmake)
    3.75以上あればよい?
    確認するには: $ make -v
  • gcc
    2.7.2以上
    確認するには: $ gcc -v
  • bison
  • flex
    2.5.4以上必要。
    確認するには: $ flex --version
  • patch
    とりあえずあればよい?

インストールディレクトリを用意する

次にインストールディレクトリを準備します。以下のディレクトリを作成し、 所有権を postgres に設定します。 尚、大抵の場合この操作はrootにならないと実行できないと思います。

# mkdir /usr/local/pgsql
# chown postgres:postgres /usr/local/pgsql/
( インストールディレクトリを作成します )

# mkdir /usr/local/src
# chown postgres:postgres /usr/local/src/
( 作成したディレクトリの所有権を変更します )

尚、もとから/usr/local/src/ ディレクトリがある場合は、作る必要なありません。ってゆうか作れないけど(^^;;;
ただし、ユーザ:postgres で書き込み可能なパーミッションに設定しておく必要はあります。

ソースの解凍

さて、用意したtarボールを適当なディレクトリに解凍します。ここでは、/usr/local/src/ 以下に解凍するものとします。
手順としてはまず、ユーザ: postgres としてログインし、tarボールを解凍するディレクトリに移動します。 パッチを当てたほうが良いかもしれません。それに関しては後日追記します(^^;;;
具体的には、tarボールのあるディレクトリに移動し...

$ cp postgresql-7.1.3.tar.gz /usr/local/src/
( ファイルを指定ディレクトリにコピー。mvでも良いでしょう。 )

$ tar xzf postgresql-7.1.3.tar.gz
( ファイルが解凍され、ファイル名と同じディレクトリが作られます)

尚、ファイル名は入手したバージョンにより異なります。

ソースのconfigure

次はソースをconfigureします。
これは、インストール用のスクリプト makefile を、 実行環境に合わせて作る作業です。 (なんかあいまいですが、そんな感じらいい...)
実行するには、解凍したディレクトリに移動し、コマンドを実行します。 そうそう、実行する前にユーザを確認しておきましょう。configure は ユーザ:postgres で行います。 私は何度か root のままで作業してしまったことがあるので(^^;;;

$ cd postgresql-7.1.3/
( 解凍してできたディレクトリへ移動します )

$ ./configure --with-enable-multibyte=EUC_JP
( configureを実行します )

実行すると、checking for うんたらかんたら... 見たいな文字がたくさん表示されてゆきます。 最後のほうで、creating なになに... のような表示が出てプロンプトへ戻れば正常に終了です。
尚、これは日本語をEUCコードで扱う場合のconfigureオプションです。 他にもいろいろあるようですが、 とりあえずはこれだけで問題ないようです。 たくさんあるconfigureオプションを知りたい方は、PostgreSQLマニュアルをご覧ください。

コンパイル

さて、次はソースをコンパイルして実行ファイルを作ります。実際にやる作業は少ないので簡単です。 ただしエラーが出なければの話ですが...
実際にやって見ましょう。ディレクトリはそのままで次のようにコマンドを入力します。

$ make

これだけで実行ファイルが作られます。コンパイルには結構時間がかかるので、ここらで一服しましょう。 マシンにもよりますが、5から15分くらいでしょうか
コンパイルが終了すると、次のようなメッセージを表示してプロンプトに戻ります。

All of PostgreSQL is successfully made. Ready to install.

このメッセージが出ない場合はコンパイルに失敗しています。

インストール実行

コンパイルが終了したら、いよいよインストールを実行します。こちらも簡単です。

$ make install

多分あっという間に終わってしまったと思います。次のメッセージが最後に表示されます。

Thank you for choosing PostgreSQL, the most advanced open source database engine.

データベース起動前に設定しておくこと

早速動かしたいところですが、環境変数やコマンドサーチパスのなどの設定を行っておきます。
これらの設定は、ユーザ:postgres の.bashrc へ書き込むことで行います。
ユーザ:postgres でログインし、/home/postgres/.bashrc ファイルへ以下の設定を書き込みましょう。

PATH="$PATH":/usr/local/pgsql/bin
export PGDIR=/usr/local/pgsql
export PGLIB=$PGDIR/lib
export PGDATA=$PGDIR/data # < データを保存するディレクトリを指定します。
export MANPATH="$MANPATH":$PGDIR/man
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"

ここでのポイントは、データを保存するディレクトリの設定でしょうか。 デフォルトでは、/usr/local/pgsql/data 以下となりますが、 ここでそれ以外のフォルダを指定しておけば、そこがデータベースの保存場所として使われます。 これらの編集が終わったら、とりあえず次のコマンドで変更を反映しておきましょう。

$ source ~/.bashrc

データベース領域の初期化

次にデータベース領域を初期化します。先ほどの環境設定で PGDATA を指定していれば、 次のコマンドでデータベースが初期化されます。 尚、ここは必ずユーザ:postgres で行ってください。 そうしないとそのデータベースは initdb を実行したユーザのものになってしまいます。

$ initdb

また、ここで文字コードやデータベースの代替領域などを指定することもできます。 詳しくはマニュアルをご覧ください。

postmasterの起動

さていよいよ動かしてみます。
PostgreSQLは、postmaster と呼ばれるプログラムがデータベースエンジンとクライアントの間のやり取りを制御します。 要するにデータベースサーバの本体ということであり、 postmaster が起動していないとデータベースにはアクセスできない、 ということです。 postmaster の詳細はマニュアルをご覧ください。
とりあえず、次のコマンドを入力すれば postmaster が起動します。

$ postmaster -S

これにより postmaster はデーモンとして起動し、データベースへの接続が可能になるわけですが、 postmaster はバックエンドのプログラムなので、直接操作はできません。
postmaster に接続する方法はいろいろありますが、PostgreSQL には psql と呼ばれるフロントエンドが付属しています。 まぁせっかく動かしてみたんだから、なんかかまってみたいと思うので、 とりあえず psql でこんなことをして見ましょう。

$ psql -l

何か表示されましたか?これはデータベースの一覧を表示するコマンドですが、 List of databases と書かれている表が表示され、 その中に template0 と template1 というのがあると思います。 この表が出てくれば、とりあえずここまでの作業は大体成功しています。 ちなみに、今表示されているのは、新しいデータベースを作成する場合に使用されるテンプレートだそうです。

外部アクセスの設定

さて、実はデフォルトでは、postmaster はローカルマシン以外からのアクセスを受け付けてくれません。 実際にはローカルマシンがサーバになってクライアントからの要求にこたえるので、 これではサービスを行えませんね。 そこで外部からアクセスできるように設定を行います。
この設定は、先ほど initdb してできたディレクトリの中のファイル pg_hba.conf で行います。 デフォルトの場合は、/usr/local/pgsql/data/pg_hba.conf となります。
とりあえず詳細はマニュアルを見てもらうとして、たとえばローカルネットワークからのアクセスを許可するには、 次のような設定をファイルの一番最後にでも加えます。

host all 192.168.0.0 255.255.255.0 trust

これにより、ローカルネットワークのIPアドレス 192.168.0.1 〜 192.168.0.255 をもつクライアントからの接続が許可されます。 ただし、この設定だけではアクセスできません。postmaster の起動時に、 この外部からのアクセス設定を使用できるように引数を渡してやる必要があります。 具体的には、postmaster を次のように起動します。

$ postmaster -S -i

まぁ、-i オプションを加えるだけですけど(^^;;;
これでクライアントからのアクセスもできるようになっています。

自動起動の設定

さて、これで大体の設定は終わりました。あとはサーバの起動時に自動的にpostmaster が起動してくれるようにしておきましょう。
起動時に自動実行させるには、次のようなスクリプトを、/etc/rc.d/rc.local へ追記します。

  PGDIR=/usr/local/pgsql
    if [ -x $PGDIR/bin/postmaster -a -d $PGDIR/data ];then
            rm -f /tmp/.s.PGSQL.5432
            su - postgres -c "postmaster -S -i"
            echo 'Starting postmaster '
    fi

これで、サーバ起動時に postmaster が自動的に起動します。