改訂第3版  PC UNIXユーザのための
PostgreSQL
完 全 攻 略 ガ イ ド
石井達夫 著 技術評論社(¥3,654)
の購入(2001/06/08)を機に、これまで rpm インストールであった postgresql, apache, php をソースからコンパイルし、インストールすることとした。
rpm インストールは楽ちんであるが、おまかせインストールのため設定ファイルのカスタマイズがわかりにくい。特に postgresql, apache, php といった相互に連係したプログラムのうち、今回のようにまだ rpm版が配布されていない postgresql のみアップしようとすると連係を保のが難しい。
■ 準備
(1)既存データベースのバックアップ
$ pg_dump leoniddb > leoniddb.backup
$ pg_dump postal > postal.backup
(2)rpm でインストールした postgresql, apache, php のアンインストール
$ rpm -aq | grep php
php-4.0.4-1vl1
php-imap-4.0.4-1vl1
php-pgsql-4.0.4-1vl1
mod_php-4.0.4-1vl1
php-manual-4.0.4-1vl1
$ rpm -aq | grep apach
apache-1.3.19-0vl1
apache-devel-1.3.19-0vl1
apache-manual-1.3.19-0vl1
$ rpm -aq | grep postg
postgresql-7.0.3-2vl5
postgresql-devel-7.0.3-2vl5
postgresql-jdbc-7.0.3-2vl5
postgresql-odbc-7.0.3-2vl5
postgresql-perl-7.0.3-2vl5
postgresql-python-7.0.3-2vl5
postgresql-server-7.0.3-2vl5
postgresql-tcl-7.0.3-2vl5
postgresql-test-7.0.3-2vl5
(3)postgreSQL 管理のスーパーユーザである postgres ユーザの登録
# adduser postgres
# passwd postgres
■ postgreSQL のインストール  2001/06/09
# mkdir /usr/local/pgsql
# mkdir /usr/local/src/pgsql
# chown postgres:postgres /usr/local/pgsql
# chown postgres:postgres /usr/local/src/pgsql
# su - postgres
# Password:
  
$ cd /usr/local/src/pgsql
$ tar xfz ./postgresql-7.1.1-patched-20010508.tar.gz
$ cd postgresql-7.1.1
$ ./configure --enable-multibyte=EUC_JP --enable-syslog
$ make all
$ make install
(傷害メモ)
(1)現象
  当初 make all 後、3〜4分で完全フリーズ(電源再投入しか回復不可)
  3回再挑戦したがおなじ場所で再現(下記)
--------ここから
 ・
 ・
 ・
gcc -02 -Wall -Wmissing-prototypes -Wmissing-declaretions -I
../../../src/intrfaces/libpq -I../../../src/include -c -o pg_dump.o pg_dump.c
Message from syslogd@p3450 at Sat Jun  9 22:04:11 2001 ...
p3450 kernel: CPU 0: Machine Check Exception: 0000000000000004 
--------ここまで
(2)原因と対応策
  自作機 p3450 は pentiumIII450 を 600MHz にクロックアップして使用していたが、
  CPU 傷害のようなので、450MHz に戻したらすんなりインストールできた。
  その後、また 600MHz にクロックアップして使用しているが、現在のところ傷害は認められない。
■ 環境設定
  postgreSQLを利用する user の ~/.bashrc にパスを追加
  (user:postgres,leonid)
  PATH="$PATH":/usr/local/Acrobat4/bin:/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
  ※設定変更後、下記を忘れぬよう
$ source ~/.bashrc 
■ postgresql.conf の編集
(user:postgres にて)
[postgres@p3450 data]$ cat /usr/local/pgsql/data/postgresql.conf
#
# PostgreSQL configuration file
# -----------------------------
#
(snip)
#-----------------2001/6/10 by leonid
silent_mode = on
tcpip_socket = on
syslog = 2
#-----------------2001/6/10 by leonid
#
#       Connection Parameters
#
#tcpip_socket = false
#ssl = false
#max_connections = 32 # 1-1024
#port = 5432 
#hostname_lookup = false
#show_source_port = false
#unix_socket_directory = ''
#unix_socket_group = ''
#unix_socket_permissions = 0777
(snip)
■ /usr/local/pgsql/data/pg_hba.conf 編集 (ODBC:他ホストからの接続許可)
  PostgreSQLでは、tcpip_socket を on にしただけでは自ホストからしか接続
  できない
(特定ホストへの接続許可)採用
host    all     192.168.1.2     255.255.255.255         trust
(不特定ホストへの接続許可)
host    all     0.0.0.0     0.0.0.0         trust
■ データベースの初期化
(user:postgres にて)
$ initdb
■ postmasterの起動
■ postmasterの自動起動
$ cat /etc/rc.d/init.d/postgres
#!/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 
#   modified from other startup files in the
#   RedHat Linux distribution
#
#   Clark Evans 
#   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="postgres"
#
#  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
-----------未完
  | pc-unix | toppage |