CentOS 5/PostgreSQL8.3系



前書き (執筆:2008/09/08)

このページではPostgreSQL公式サイトからソースファイル(tar.gz)を使ってインストールする方法を記載しています。
8.3系最新バージョンは 執筆時点で8.3.3 になります。
自分の環境に合わせて 8.3系 8.2系 8.1系 8.0系 7.4系 を選択してください。

最新CentOS 5.2にはPostgreSQLは8.1系が用意されています。

  • つねに最新バージョンで運営を行いたい。
  • 運営の関係で他のPostgreSQLバージョンを利用したい

等、特別な目的がある方以外はRPM(パッケージ)の利用をお勧めします。

ユーザの追加・環境設定

新規にPostgreSQLをインストールする場合に必要な作業です。
アップデートの場合は必要ありません。
root(スーパーユーザー)で行う必要がありますので注意してください。

$ su -
Password: (パスワードの入力)
# groupadd postgres
# useradd -g postgres -c "PostgreSQL User" -d /var/lib/postgres -s /bin/bash postgres
# mkdir /usr/local/pgsql
# chown postgres:postgres /usr/local/pgsql

注:登録したユーザー postgres については、SSHやftpから接続できないように 各々に設定も追加した方がセキュリティー的に安全です。

postgresユーザの環境変数を追加します。
下記の方法はコマンドシェルにbashを利用している場合です。
自分の利用環境に合わせて修正してください。

# su - 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

ソースファイルの入手

PostgreSQLのWebサイトより最新のソースファイルを取得します。
(執筆時点の最新版は 8.3.3 になります。)

$ wget wget ftp://ftp2.jp.postgresql.org/pub/postgresql/source/v8.3.3/postgresql-8.3.3.tar.gz

下記のように処理されます。

--19:27:27--  ftp://ftp2.jp.postgresql.org/pub/postgresql/source/v8.3.3/postgresql-8.3.3.tar.gz
           => `postgresql-8.3.3.tar.gz'
ftp2.jp.postgresql.org をDNSに問いあわせています... 150.65.7.130
ftp2.jp.postgresql.org|150.65.7.130|:21 に接続しています... 接続しました。
anonymous としてログインしています... ログインしました!
==> SYST ... 完了しました。    ==> PWD ... 完了しました。
==> TYPE I ... 完了しました。  ==> CWD /pub/postgresql/source/v8.3.3 ... 完了しました。
==> SIZE postgresql-8.3.3.tar.gz ... 17500570
==> PASV ... 完了しました。    ==> RETR postgresql-8.3.3.tar.gz ... 完了しました。
長さ: 17500570 (17M)

100%[===================================================>] 17,500,570  1.24M/s   in 13s

19:27:41 (1.27 MB/s) - `postgresql-8.3.3.tar.gz' を保存しました [17500570]

ソースファイルの展開

ダウンロードしたソースファイルを展開します。

$ tar xzf postgresql-8.3.3.tar.gz

展開が終了すると postgresql-8.3.3 というディレクトリが作成されます。

drwxrwxrwx  6   258   258 4096  6月  9 09:58 postgresql-8.3.3

コンフィグ・コンパイル・インストール

コンフィグレーションは運用スタイルに合わせてオプションを追加してください。
オプション詳細はPostgreSQL公式サイトのドキュメントを参照してください。~[

$ ./configure \
--with-openssl \
--with-pam

下記のように処理されます。

checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking which template to use... linux
  ・
  ・
configure: creating ./config.status
config.status: creating GNUmakefile
config.status: creating src/Makefile.global
config.status: creating src/include/pg_config.h
config.status: creating src/interfaces/ecpg/include/ecpg_config.h
config.status: linking ./src/backend/port/tas/dummy.s to src/backend/port/tas.s
config.status: linking ./src/backend/port/dynloader/linux.c to src/backend/port/dynloader.c
config.status: linking ./src/backend/port/sysv_sema.c to src/backend/port/pg_sema.c
config.status: linking ./src/backend/port/sysv_shmem.c to src/backend/port/pg_shmem.c
config.status: linking ./src/backend/port/dynloader/linux.h to src/include/dynloader.h
config.status: linking ./src/include/port/linux.h to src/include/pg_config_os.h
config.status: linking ./src/makefiles/Makefile.linux to src/Makefile.port

コンパイルを行います。

$ make

下記のように処理されます。(サーバースペックによっては時間がかかります。)

make -C doc all
make[1]: ディレクトリ `/usr/local/src/postgresql-8.3.3/doc' に入ります
gzip -d -c man.tar.gz | /bin/tar xf -
/bin/tar: 2048 バイトを - から読み込み
  ・
  ・
make[1]: ディレクトリ `/usr/local/src/postgresql-8.3.3/config' から出ます
All of PostgreSQL successfully made. Ready to install.

必要に応じて動作チェックを行ってください。

$ make check

下記のように処理されます。

  ・
  ・
test stats                ... ok
test tablespace           ... ok
============== shutting down postmaster               ==============
server stopped

=======================
 All 114 tests passed.
=======================

make[2]: ディレクトリ `/usr/local/src/postgresql-8.3.3/src/test/regress' から出ます
make[1]: ディレクトリ `/usr/local/src/postgresql-8.3.3/src/test' から出ます

インストールを行います。

$ make install

下記のように処理されます。

make -C doc install
make[1]: ディレクトリ `/usr/local/src/postgresql-8.3.3/doc' に入ります
mkdir -p -- /usr/local/pgsql/doc/html
mkdir -p -- /usr/local/pgsql/man/man1 /usr/local/pgsql/man/man7
gzip -d -c ./postgres.tar.gz | ( cd /usr/local/pgsql/doc/html && /bin/tar xf - )
/bin/tar: 7168 バイトを - から読み込み
  ・
  ・
mkdir -p -- /usr/local/pgsql/lib/pgxs/config
/bin/sh ../config/install-sh -c -m 755 ./install-sh '/usr/local/pgsql/lib/pgxs/config/install-sh'
/bin/sh ../config/install-sh -c -m 755 ./mkinstalldirs '/usr/local/pgsql/lib/pgxs/config/mkinstalldirs'
make[1]: ディレクトリ `/usr/local/src/postgresql-8.3.3/config' から出ます
PostgreSQL installation complete.

データベースの初期化

初めて利用する際は必ず初期化してデータの器を確保します。

$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

下記のように処理されます。

The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale ja_JP.UTF-8.
The default database encoding has accordingly been set to UTF8.
initdb: could not find suitable text search configuration for locale ja_JP.UTF-8
The default text search configuration will be set to "simple".

creating directory /usr/local/pgsql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers/max_fsm_pages ... 32MB/204800
creating configuration files ... ok
creating template1 database in /usr/local/pgsql/data/base/1 ... ok
initializing pg_authid ... ok
initializing dependencies ... ok
creating system views ... ok
loading system objects' descriptions ... ok
creating conversions ... ok
creating dictionaries ... ok
setting privileges on built-in objects ... ok
creating information schema ... ok
vacuuming database template1 ... ok
copying template1 to template0 ... ok
copying template1 to postgres ... ok

WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the -A option the
next time you run initdb.

Success. You can now start the database server using:

    /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
or
    /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start

初期設定 postgresql.conf

初期設定は運用によってかなり修正内容が異なる場合があります。
ここでは最小限の設定のみ記載しておきます。
公式のドキュメントを参考にして各自の運用環境に合わせて修正をしてください。
詳細設定は、ドキュメントを参照。

設定ファイルは下記のディレクトリ下にあります。

/usr/local/pgsql/share/

設定ファイル:/usr/local/pgsql/data/postgresql.conf

# vi /usr/local/pgsql/data/postgresql.conf
port = 5432
listen_addresses = 'localhost,192.168.1.1'

※ここでは 192.168.1.1 を指定していますが、サーバーに割り当てた IPアドレス を指定してください

初期設定 pg_hba.conf

設定ファイルは下記のディレクトリ下にあります。

/usr/local/pgsql/data/

設定ファイル:/usr/local/pgsql/data/pg_hba.conf

# vi /usr/local/pgsql/data/pg_hba.conf
host    all         all         192.168.1.0/24         trust

行末に追記(192.168.1.0/24のネットワークからの接続を許可する。)

セキュリティー確保のためにも是非パスワードを利用する方をお勧めします。
外部からの接続にもパスワードを利用する場合は

host  all  all  192.168.1.0/24  password

自動起動設定

自動起動用のスクリプトファイルは、ソースを展開したディレクトリ下の contrib/start-scripts/linux に用意されています。
これを /etc/rc.d/init.d/ 配下にコピーします。
postgresユーザーから root に戻ります。

$ exit

root でコピーと起動レベルに対して処理を行います。
必要に応じて起動スクリプトを修正してください。(特に起動コマンドに対してのオプション追加など)

# cp /usr/local/src/postgresql-8.3.3/contrib/start-scripts/linux /etc/rc.d/init.d/postgresql
# chmod +x /etc/rc.d/init.d/postgresql 

自動起動を有効にします。

# chkconfig --add postgresql
# chkconfig postgresql on

内容を確認します。

# chkconfig --list postgresql
postgresql      0:off   1:off   2:off   3:on    4:on    5:on    6:off

起動します。

# /etc/rc.d/init.d/postgresql start

下記のメッセージが表示されれば無事に起動ができています。

Starting PostgreSQL: ok

なんらかのエラーメッセージが表示された場合は、内容を確認して修正をしてください。

DB利用ユーザの登録

実際にDBを操作するユーザーを登録します。
Web上のスクリプト(PHP・Java等)に記載するユーザーもここで登録します。

# su - postgres
$ createuser testuser
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) y

注:Web上のスクリプトから新しいデータベースを作成したり、ユーザーを追加するようなスクリプトを利用しない場合など状況に応じたユーザーを設定するようにしましょう。
不用意に 権限を渡すと、セキュリティーホールなどを悪用され危険が増す可能性があるので注意してください。

ユーザーパスワードの設定

パスワードを設定する場合下記の方法で行います。
セキュリティー的な問題から、特別な場合を除いてパスワードは設定したほうがいいです。

$ psql データベース名
# ALTER USER ユーザ名 WITH PASSWORD '********';
ALTER USER
# \q

バックアップ・リカバリー

データのバックアップ・リカバリー方法について記載しておきます。
実際にはいくつか方法があります。
運用スタイルに合った手法を利用してください。
ここでは、一度、バキューム処理(最適化)したのち、フルデータをファイルに書き出す方法(pg_dumpall)を記載します。
またリカバリーについても、pg_dumpallによって書き出したファイルを使う方法を記載します。
スクリプトなどを組んでcronで定期処理すると便利でしょう。

バキューム(最適化)方法

$ vacuumdb -a


バックアップ方法
(下記は backup + 日付 を記載したSQLファイルを作成しています。)

$ pg_dumpall > ~/backupYYYYMMDD.pgsql

注:YYYYMMDDは日付を表しています。

リカバリー方法

$ psql -f backupYYYYMMDD.pgsql template1


シェルスクリプトで上記方法にてバックアップする簡単な方法を記載しておきます。

# vi bacup_postgres.sh

下記の内容を入力します。

#!/bin/sh
/usr/local/pgsql/bin/vacuumdb -a
/usr/local/pgsql/bin/pg_dumpall > backup$(date +%Y%m%d).pgsql

実行パーミッションを与えます。

# chmod +x bacup_postgres.sh

これを cron などに組み込めばバキュームした後、日付がついたバックアップファイルを作成してくれます。



Last-modified: 2015-04-23 (木) 15:33:25 (1248d)