最終更新日:平成14年12月11日(平成15年10月04日 若干訂正)

PostgreSQLのページ                                                  

保存するディレクトリなどは環境にあわせて実施ください。
また、インストールにあたっては「日本 PostgreSQL ユーザ協会」でバージョンに合ったマニュアルを参照ください。

グループウェア「SkyBoard」を使ってみたくなり、それを動かすための一つとして「PostgreSQL」が必要だったためインストールしました。
インストールにあたっては(株)システムコンサルタンツ「PostgreSQLのインストール」を参考にさせていただきました。
ここの説明はLinux向けになっておりますので、FreeBSDでかつtakaqの自宅サーバー向けにインストールした記録として残しておくこととしました。


【PosrgreSQLとは?】

PostgreSQLは、オープンソースでフリーな高機能データベースソフトです。商用のデータベースソフトと比べても遜色のない安定性、機能を持っており、非常に人気があるようです。
「PostgreSQL」の読み方ですが、「ポストグレス」「ポストグレエスキューエル」「ポストグレスキューエル」と人によって様々なようです。
同じオープンソースのデータベースソフトには「MySQL」があります。

【PostgreSQLのインストール・セットアップ方法】

●ユーザアカウントの作成
まずはrootでログインし、 PostgreSQL用のグループとユーザーアカウントを作成します。今回はどちらも「postgres」という名前にします。
これは、後述しますがPostgreSQLのセットアップやデータベースの初期化にPostgreSQL用のユーザアカウントが要るためです。

・/stand/sysinstallを起動し「インストール後の環境設定」で、はじめにPostgreSQL用のグループ(postgres)を作成しました。
・続いて、PostgreSQL用のユーザアカウントを作成しました。
 ホームディレクトリは/home/postgres、パスワードは********、所属グループは上で作成したpostgresです。

[雑談]
久しぶりに/stand/sysinstallでユーザアカウント設定しました。PostgreSQL用のグループ作成をしない状態でユーザアカウント作成を実行したら、「グループ:postgresは無いよ〜」みたいにペンペンされてしまいました。当然すよね・・・・・あはは
●PostgreSQLのソースファイルの取得

 ・「日本 PostgreSQL ユーザ協会」のページからダウンロードしました。
  ダウンロードしたのは参考にしたページに記載のpostgresql-7.1.3.tar.gzです。
●PostgreSQL圧縮ファイルの転送
・エスクプローラーにてpostgresql-7.1.3.tar.gzをコピー、samba共有している/usr1/mydata/etcに貼り付けしました。

[雑談]
     本当はftpでファイル転送するところなのですが、samba共有はとても便利なのでいつもだいたいこの方法をとっています。
●PostgreSQL用の各ファイルを置くディレクトリの作成
 ・カレントディレクトリを/usr/localに移動しました。(cd /usr/local [Enter])
 ・実行ファイルを置くディレクトリを作成し、オーナー、グループをpostgresに設定しました。
  mkdir pgsql [Enter]
  chown postgres.postgres pgsql [Enter]
 ・ソースファイルを置くディレクトリを作成作成しました。
  mkdir src [Enter]
●PostgreSQL圧縮ファイルの解凍・展開

・カレントディレクトリを/usr/local/srcに移動しました。 (cd /usr/local /src[Enter])
・/usr1/mydata/etcにあるpostgresql-7.1.3.tar.gzをコピーしました。 (cp /usr1/mydata/etc/postgresql-7.1.3.tar.gz . [Enter])
・postgresql-7.1.3.tar.gzを解凍・展開します。 (tar -xfz /usr/local/src/postgresql-7.1.3.tar.gz [Enter])

 ※これにより/usr/local/src/postgresql-7.1.3というディレクトリが作成され、配下に色々なファイルが作成されました。
・postgresql-7.1.3.tar.gzはもう必要無いので削除しました。(rm -i postgresql-7.1.3.tar.gz [Enter])
・展開されたソースのオーナー、グループを変更し、postgresユーザでログインしました。
 chown -R postgres.postgres postgresql-7.1.3 [Enter]
 su - postgres [Enter]
 
●configure実行

 環境に合わせた設定を行う為、configureスクリプトを使います。
 configure時にエラーが出る場合は、PostgreSQLのコンパイルに必要なファイルが揃っていない可能性があります。
・展開したPostgreSQLのディレクトリに移動しました。(cd /usr/local/src/postgresql-7.1.3 [Enter])
・configureを実行しました。
 ./configure --enable-multibyte=EUC_JP [Enter]
●ソースのコンパイルとインストール

 ・次のコマンドによりコンパイル、インストールをしました。
 make clean [Enter]
 make all [Enter]
 make install [Enter]

[補足]
最初のmake cleanでコンパイルエラーが出ました。参考にしたページによるとコンパイラが入っていない可能性がありますとのことなのですが、肝心のコンパイルが書いてないのです。他のページで探したところ「GNUmake(gmake)」なるものが必要とのこと。
      /stand/sysinstallで「インストール後の環境設定」→「配布パッケージの追加」→「開発者向けパッケージ」の中にありました。
早速インストールしてmake cleanしたらOKでした。
●Postgresユーザの環境設定
PostgreSQLを動作させるには、postgresユーザの環境変数を設定する必要があります。
ユーザpostgresでログインし.profile(vi .profile [Enter])を開き、以下を追加しました。telnetを2つ起動しディレクトリを確認しながら設定しました。
PATH="$PATH":/usr/local/pgsql/bin;                   export PATH
POSTGRES_HOME=/usr/local/pgsql;                    export POSTGRES_HOME
PGLIB=$POSTGRES_HOME/lib;                       export PGLIB
PGDATA=$POSTGRES_HOME/data;                     export PGDATA
MANPATH="$MANPATH":$POSTGRES_HOME/man;           export MANPATH
LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB";          export LD_LIBRARY_PATH
上記を補足すると・・・・・・・
  PATH=/usr/local/pgsql/bin
  POSTGRES_HOME=/usr/local/pgsql
  PGLIB=/usr/local/pgsql/lib
  PGDATA=/usr/local/pgsql/data
  MANPATH=/usr/local/pgsql/man
  LD_LIBRATY_PATH=/usr/local/pgsql/lib
●データベースの初期化
・前記で設定した環境変数を有効にするため、postgresユーザーで再ログインしました。
・次のコマンドを実行しデータベースを初期化しました。

 initdb [Enter]
●postgresql.confの設定

 これはどうやらPostgreSQLの色んな動作条件を設定するものらしいです。(詳細は後で調べたいと思います)
 ・カレントディレクトリを/usr/local/pgsql/dataに移動しました。(cd /usr/local/pgsql/data [Enter])
 ・viでpostgresql.confを開きました。(vi postgresql.conf [Enter])
  いっぱいリマークされた設定個所がありましたが、参考にしたページのとおり以下の記述を設定しました。
 
silent_mode = false

silent_mode = true

tcpip_socket = false

tcpip_socket = true
●PostgreSQLのデーモンプロセス postmasterの起動

 ・以下のコマンドでpostmasterを起動しました。

 pg_ctl -w start [Enter]

 何やら良さそうなメッセージを表示したのでps auxでプロセスを見たところ、postmasterが動いていました。
●Apacheの実行ユーザーであるnobodyをPostgreSQLユーザーとして登録

 ・以下のコマンドを実行しました。

 createuser nobody [Enter]

 ・「新しいユーザにデータベース作成を許可しますか?」「新しいユーザにユーザ作成を許可しますか?」というような質問が英語でされますが、どちらもNo(n)と答えます。
インストールと設定はここまでです。試行錯誤しながらここまで約3時間半くらいかかってしまいました。ふう〜
最後に/usr1/mydataと置いたpostgresql-7.1.3.tar.gzを削除しました。

●自動起動の設定

 前にこのサーバーに設定した時の記録をとっていましたので、それを流用し/usr/local/etc/rc.dに保存しました。
 そしてviで/usr/local/etc/rc.d/pgsql.shを開き環境に合わせ修正しました。 
#!/bin/sh

# $FreeBSD: ports/databases/postgresql7/files/pgsql.sh.tmpl,v 1.12 2001/05/02 11:44:38 olgeni Exp $
#
# For postmaster startup options, edit $PGDATA/postgresql.conf

PGBIN=/usr/local/pgsql/bin

case $1 in
   start)
      [ -d /usr/local/lib ] && /sbin/ldconfig -m /usr/local/lib
      [ -x ${PGBIN}/pg_ctl ] && {
      su -l postgres -c \
      '[ -d ${PGDATA} ] && exec /usr/local/pgsql/bin/pg_ctl start -s -w -l ~pgsql/errlog'
      echo ' postgres start'
      }
      ;;

    stop)
      [ -x ${PGBIN}/pg_ctl ] && {
      su -l postgres -c 'exec /usr/local/pgsql/bin/pg_ctl stop -s -m fast'
      echo ' postgres stop'
      }
      ;;

   status)
      [ -x ${PGBIN}/pg_ctl ] && {
      exec su -l postgres -c 'exec /usr/local/pgsql/bin/pg_ctl status'
      }
      ;;

      *)
      echo "usage: `basename $0` {start|stop|status}" >&2
      exit 64
      ;;
esac
上記のように修正して、今度は手動(/usr/local/etc/rc.dでスーパーユーザでsh pgsql.sh start [Enter])で起動しました。
そうしたら、「~pgsql/errlogは作れません」のメッセージ、~pgsql/errlogを/var/log/errlogにしたら「そのようなものはありません」のメッセージ を返してきました。ん〜なんだべ!
またまた直感で、postgresでログインしホームディレクトリ直下に~pgsqlディレクトリを作成しました。
そして、また手動(/usr/local/etc/rc.dでスーパーユーザでsh pgsql.sh start [Enter])で起動したら「OKそうなメッセージ」でした。
ps auxで確認したら無事ユーザpostgresでpostmasterのデーモンが動いていました。やれやれです。

戻る

サイトトップへ