◆ 最新の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 ファイルに追記してください。
・ 参考までに、私のPCの設定ファイルを掲載しておきます。ここをクリックしてください。
追記内容 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"
(注) .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 のパラメータを修正してください。
・ 参考までに、私のPCの設定ファイルを掲載しておきます。ここをクリックしてください。
修正前 修正後 #silent_mode = false silent_mode = on #syslog = 0 syslog = 2
◆ 手動で、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 の内容・ ダウンロードした postgres_sh.txt ファイルを /etc/rc.d/init.d 下へコピーしてください。
#!/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 <[email protected]>
# modified from other startup files in the
# RedHat Linux distribution
#
# Clark Evans <[email protected]>
# 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
# 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 と答えてください。