2010年7月20日火曜日

PostgreSQL ソースからインストール

●構成
CentOS 5.5
PostgreSQL 8.4.3

●運用ユーザ
今さらですがpostgresqlはrootでは運用できませんので、専用ユーザを作成します。
ここでは専用ユーザをpostgresとします。
# adduser postgres
# passwd postgres ※ログオンしなければパスワードを設定する必要はありません。

●作業ディレクトリ
# mkdir /usr/local/src/postgresql
# chown postgres:postgres /usr/local/src/postgresql

●インストール先ディレクトリ
# mkdir /usr/local/pgsql
# chown postgres:postgres /usr/local/pgsql

●インストール
# cd /usr/local/src/postgresql
# wget ftp://ftp2.jp.postgresql.org/pub/postgresql/source/v8.4.3/postgresql-8.4.3.tar.gz
# chown postgres:postgres ./postgresql-8.4.3.tar.gz
# chmod 755 postgresql-8.4.3.tar.gz
# yum -y install readline readline-devel zlib-devel

【readlineについて】
psqlコマンドによるコマンドの記憶やコマンド履歴の参照を使わない場合readlineとreadline-develは不要です。ただしconfigureで--without-readlineオプションを指定します。

【zlibについて】
pg_dumpおよびpg_restore内の圧縮アーカイブサポートを無効化にしたい場合zlib-devel(zlib含む)は不要です。ただしconfigureで--without-zlibオプションを指定します。

(ここからはpostgresユーザで作業します)
# su - postgres
$ cd /usr/local/src/postgresql
$ tar zxvf postgresql-8.4.3.tar.gz
$ cd ./postgresql-8.4.3
$ ./configure
(デフォルトのインストールディレクトリは/usr/local/pgsqlとなります)
$ gmake
 All of PostgreSQL successfully made. Ready to install.
$ gmake check
All 120 tests passed.
$ gmake install
PostgreSQL installation complete.

環境変数の設定
$ cd /home/postgres
$ vi .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

再読み込み→pathチェック
$ source .bashrc
$ printenv

●初期化
デフォルト文字コードはEUC_JPですが、DB作成時に指定すればUTF8も大丈夫です。
ロケールは設定しません(日本語ソートがおかしくなるので必須です)。
$ initdb --encoding=EUC_JP --no-locale

●アクセス権限等の設定
$ vi /usr/local/pgsql/data/postgresql.conf
ローカルホスト以外からのアクセスを許可(私は別途WindowsPCからエディタを接続するため)
#listen_addresses = 'localhost' → listen_addresses = '*'
※IPv4のみに強制にしたい場合はlisten_addresses = '0.0.0.0'

ログはsyslog
#log_destination = 'stderr' → log_destination = 'syslog'

$ vi /usr/local/pgsql/data/pg_hba.conf
host all all 192.168.0.0/24 md5の1行を追記(アクセス可能なネットワーク)

●syslog設定
(ここからはrootで作業します)
$ exit
# vi /etc/syslog.conf
※ちなみにCentOS6では、/etc/rsyslog.confです。
以下を最終行に追記する
local0.* /var/log/postgresql.log

#/etc/init.d/xinetd restart
※ちなみにCentOS6では、/etc/init.d/rsyslog restartでよいかも。

ログローテーション設定
# vi /etc/logrotate.d/postgresql
/var/log/postgresql.log {
rotate 12
weekly
missingok
sharedscripts
postrotate
/usr/bin/killall -HUP syslogd (CentOS6ではrsyslogd)
endscript
}

●起動
(ここからはpostgresで作業します)
# su - postgres
$ pg_ctl -w start

●データベースユーザの追加
---------------------------------------------------
因みにPostgreSQL9.2ではロールの割り当て方法が変わった

DB作成許可のユーザを作成
$ createuser username -d -P

-d:DB作成許可
-P:パスワード設定

詳しいオプションは、createuser --help
---------------------------------------------------

$ createuser -P username

Enter password for new role:パスワード入力(username)
Enter it again:確認のためもう一回入力

※スーパーユーザにしますか?
Shall the new role be a superuser? (y/n) n

※データベース作成を許可しますか?
Shall the new role be allowed to create databases? (y/n) y

※新しいユーザを作成できるよう許可しますか?
Shall the new role be allowed to create more new roles? (y/n) n

●データベースの作成
$ createdb DB名 --owner=username --encoding=UNICODE --template=template0
$ psql -l

●停止
$ pg_ctl -w stop

●自動起動
(ここからはrootで作業します)
$ exit
# cd /etc/rc.d/init.d/
# cp -p /usr/local/src/postgresql/postgresql-8.4.3/contrib/start-scripts/linux postgresql
# chown root.root postgresql
# chmod 755 postgresql
# chkconfig --level 2345 postgresql on

これでサーバ起動時PostgreSQLも起動します。

rootによる起動・停止方法
# /etc/init.d/postgresql start
# /etc/init.d/postgresql stop

●PL/pgsqlのインストール(開発言語なので開発をしない方は不要)
 # su - postgres
 $ pg_ctl -w start (/usr/local/pgsql/bin/pg_ctl)
  postmaster started
 $ createlang plpgsql template1

 9.0からPL/pgsqlはデフォルトでインストールされています。
 

0 件のコメント:

Google検索