Saito's Linux Webpage

PostgreSQLのインストール手順

  (凡例)
   # ・・・ root でログイン時のコマンドプロンプトを表します。
   $ ・・・ root 以外 でログイン時のコマンドプロンプトを表します。

  (対象OS)
    Red Hat Linux 8.0

  (参考文献)
    改訂第3版 PC UNIXユーザのための PostgreSQL完全攻略ガイド(石井達夫 著/技術評論社)


  01. 最新のPostgresパッケージを入手する。
  02. インストール済みrpmパッケージのアンインストール
  03. ユーザアカウント作成
  04. ソース展開用ディレクトリ作成、インストール先ディレクトリ作成
  05. ソース展開
  06. コンパイル、インストール
  07. ユーザアカウント環境設定
  08. データベース初期化
  09. Postgres環境設定ファイル変更
  10. 手動で、postmasterの起動・停止を確認する。
  11. レグレッション・テスト
  12. postmasterの自動起動設定
  13. Postgresへのユーザ登録


最新のPostgresパッケージを入手する。
Postgresパッケージは、ここから最新のものをダウンロードしてください。 (日本PostgreSQLユーザ会のホームページからも辿っていくことができます。)

私が自分のPCにインストールした当時は、バージョン7.3.1が最新だったため、ここではPostgresパッケージとして 「postgresql-7.3.1.tar.gz」を使用します。
インストール済みrpmパッケージのアンインストール
すでにPostgresのrpmパッケージがインストール済みの場合、それが邪魔になってソースからのコンパイルが上手くいかない事があります。 その場合はrpmパッケージを削除してください。

まず root でログインします。

インストール済みrpmパッケージの検索を行います。
   # rpm -qa | grep postgresql

   何も出力されなければ、インストールされていません。パッケージ名などが出力された場合は、以下の方法でアンインストールして下さい。

rpmパッケージのアンインストール
   # rpm -e postgresql

   上記コマンドを実行した場合、rpmパッケージの依存関係のためにアンインストールできない場合があります。
   このような場合は、依存関係でチェックされたパッケージをすべてアンインストールした後で、Postgresをアンインストールしてください。
ユーザアカウント作成
以下のユーザアカウントを作成します。
   saipost ・・・ Postgresスーパユーザ
   saiusr... ・・・ Postgres一般ユーザ

Postgresスーパユーザ用アカウント作成
   # /usr/sbin/adduser saipost
   # passwd saipost

Postgres一般ユーザ用アカウント作成
   # /usr/sbin/adduser saiusr
   # passwd saiusr
ソース展開用ディレクトリ作成、インストール先ディレクトリ作成
# cd /usr/local

# mkdir pgsql   ・・・ /usr/local/pgsql (インストール先ディレクトリ)の作成
# chmod 777 pgsql

# mkdir src    .・・・ /usr/local/src (ソース展開用ディレクトリ)の作成
# chmod 777 src
ソース展開
Postgresパッケージファイル 「postgresql-7.3.1.tar.gz」 を /usr/local/src 下へコピーしてください。

saipost(Postgresスーパユーザ)でログインし直します。 以降の作業はsaipostユーザにて実行します。

ソースを展開します。
   $ cd /usr/local/src
   $ tar xfz postgresql-7.3.1.tar.gz

   ・・・ これで /usr/local/src/postgresql-7.3.1 というディレクトリが作成されます。この中にPostgresの全ソースが収められています。
コンパイル、インストール
configure の実行
   $ cd /usr/local/src/postgresql-7.3.1
   $ ./configure --enable-multibyte=EUC_JP --enable-syslog

   --enable-multibyte オプションは、Postgresが使用するデフォルトの文字コードを指定します。ここでは日本語EUCを指定します。
   --enable-syslog は、syslogを使ってログを取ることを指定するオプションです。

コンパイル
   $ make all

   コンパイルには数分かかります。しばらく待ちましょう。

   コンパイルが正常に終われば、
      All of PostgreSQL successfully made. Ready to install.
   と表示されます。

インストール
   $ make install

   上記コマンドの実行により、/usr/local/pgsql 下にプログラムやライブラリがインストールされます。

   インストールが正常に終われば、以下のメッセージが表示されます。
      Thank you for choosing PostgreSQL, the most advanced open source database engine.
ユーザアカウント環境設定
saipost(Postgresスーパユーザ)の環境設定
テキストエディタで、下記の通り /home/saipost/.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"
参考までに、私のPCの設定ファイルを掲載しておきます。ここをクリックしてください。

(注) .bashrcの変更を反映するには、saipostでログインし直してください。
saiusr(Postgres一般ユーザ)の環境設定
saiusrでログインし直します。 以降の作業はsaiusrユーザにて実行します。

テキストエディタで、先程と同じ内容を /home/saiusr/.bashrc ファイルに追記してください。

(注) .bashrcの変更を反映するには、saiusrでログインし直してください。
データベース初期化
Postgresには、データベースを管理するためのディレクトリ(データベースクラスタ)が必要です。 このデータベースクラスタを作成することを 「データベースの初期化」 と呼びます。

saipost(Postgresスーパユーザ)でログインし直します。 以降の作業はsaipostユーザにて実行します。

以下のコマンドを投入して、初期化を実行してください。
   $ initdb
Postgres環境設定ファイル変更
postgresql.conf ファイル変更
テキストエディタで、下記の通り /usr/local/pgsql/data/postgresql.conf のパラメータを修正してください。
修正前 修正後
#silent_mode = false silent_mode = on
#syslog = 0 syslog = 2
参考までに、私のPCの設定ファイルを掲載しておきます。ここをクリックしてください。
手動で、postmasterの起動・停止を確認する。
postmasterの起動
   $ pg_ctl -w start

   正常に起動すると、以下のメッセージが表示されます。
      waiting for postmaster to start...done
      postmaster successfully started

postmasterの停止
   $ pg_ctl stop

   正常に停止すると、以下のメッセージが表示されます。
      waiting for postmaster to shut down......done
      postmaster successfully shut down
レグレッション・テスト
Postgresのインストール及び環境設定が正しく行われたかどうか確認するため、レグレッション・テストを行います。

レグレッション・テストの実行
   $ cd /usr/local/src/postgresql-7.3.1
   $ make check

   最後に All xx tests passed. と表示されれば成功です。
postmasterの自動起動設定
root でログインし直します。 以降の作業は root ユーザにて実行します。

ここをクリックして postgres_sh.txt ファイルをダウンロードしてください。
postgres_sh.txt の内容
#!/bin/sh
#
# postgres - This script is used to start/stop
#      the postgreSQL listener process.
#
# Usage
#
#  You can use this script manually, and/or you
#  can install this script into the runlevel system
#  by running "sh postgres.init.sh install"
#
# Credits
#
#  Thomas Lockhart <lockhart@alumni.caltech.edu>
#  modified from other startup files in the
#  RedHat Linux distribution
#
#  Clark Evans <cce@clarkevans.com>
#  cleaned up, added comments, etc.
#
#  modified for PostgreSQL book written by Tatsuo Ishii
#
# RedHat Stuff
#
#  chkconfig: 345 85 15
#  description: Starts and stops the PostgreSQL backend daemon\
#         that handles all database requests.
#  processname: postmaster
#
# Config Variables
#
PGACCOUNT="saipost"
#
# The non-root user account which will be used to run the
# PostgreSQL executeable.  For this script to work, the
# shell for this account must be SH/BASH.
#
PGDATA=/usr/local/pgsql/data
POSTMASTER="/usr/local/pgsql/bin/postmaster"
PG_CTL="/usr/local/pgsql/bin/pg_ctl"
#
# The executable program which is to be run, in this case
# it is the listener, which waits for requests on the port
# specified during configuration.
#
# Source function library.
. /etc/rc.d/init.d/functions

#
# See how we were called.
#
case "$1" in
 start)
  echo -n "Starting postgres: "
  su - $PGACCOUNT -c "$POSTMASTER -D $PGDATA &"
  echo
  touch /var/lock/subsys/postgres
  ;;
 stop)
  echo -n "Stopping postgres: "
  $PG_CTL -m f stop
  echo
  rm -f /var/lock/subsys/postgres
  ;;
 *)
  echo "Usage: $0 {start|stop}"
  exit 1
esac

exit 0
ダウンロードした postgres_sh.txt ファイルを /etc/rc.d/init.d 下へコピーしてください。
   # cp postgres_sh.txt /etc/rc.d/init.d/postgres

以下のコマンドを投入して、自動起動の設定を行ってください。
   # cd /etc/rc.d/init.d
   # chown root:root postgres
   # chmod 755 postgres
   # /sbin/chkconfig --add postgres

Linuxマシンを再起動してください。
   # /sbin/shutdown -r now
Postgresへのユーザ登録
saipost(Postgresスーパユーザ)のユーザ登録
データベース初期化のところで initdb 実行時、自動的に登録済みとなっているので、ここでは何も行いません。
saiusr(Postgres一般ユーザ)のユーザ登録
saipostでログインし直します。 以降の作業はsaipostユーザにて実行します。

createuser コマンド実行
   $ createuser saiusr
   shall the new user be allowed to create database? (y/n) y        .(1)
   shall the new user be allowed to create more new users? (y/n) n    (2)
   create user

   (1)の質問では y と答えてください。
   (2)の質問では n と答えてください。

HOME INDEX