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