改訂第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 |