Fedora Core 6 PostgreSQL8.2系



前書き (執筆:2007/05/11)

注:すでに PostgreSQL 8.2以前のバージョンをインストールされている方は、Fedora Core 6 PostgreSQL8.2 アップデート? の方をご覧ください。

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

最新Fedora Core6(以下FC6)にはPostgreSQLは8.1系が用意されています。

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

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

ユーザの追加・環境設定

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

$ su -
Password: (パスワードの入力)
# groupadd postgres
# useradd -g postgres -c "PostgreSQL User" -d /home/postgres -s /bin/bash postgres
# chown -R postgres:postgres /home/postgres/
# passwd 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.2.4 になります。

$ wget ftp://ftp.jp.postgresql.org/source/v8.2.4/postgresql-8.2.4.tar.gz

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

--09:44:25--  ftp://ftp.jp.postgresql.org/source/v8.2.4/postgresql-8.2.4.tar.gz
           => `postgresql-8.2.4.tar.gz'
ftp.jp.postgresql.org をDNSに問いあわせています... 210.170.56.32
ftp.jp.postgresql.org|210.170.56.32|:21 に接続しています... 接続しました。
anonymous としてログインしています... ログインしました!
==> SYST ... 完了しました。    ==> PWD ... 完了しました。
==> TYPE I ... 完了しました。  ==> CWD /source/v8.2.4 ... 完了しました。
==> SIZE postgresql-8.2.4.tar.gz ... 15590714
==> PASV ... 完了しました。    ==> RETR postgresql-8.2.4.tar.gz ... 完了しました。
長さ: 15590714 (15M)
100%[==============================================>] 15,590,714  1.41M/s   in 11s
09:44:37 (1.39 MB/s) - `postgresql-8.2.4.tar.gz' を保存しました [15590714]

ソースファイルの展開

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

$ tar xzf postgresql-8.2.4.tar.gz

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

drwxrwxrwx  6   postgres   postgres     4096  4月 20 14:13 postgresql-8.2.4

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

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

$ ./configure \
--with-gnu-ld \
--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
checking whether to build with 64-bit integer date/time support... no
  ・
  ・
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]: ディレクトリ `/home/postgres/postgresql-8.2.4/doc' に入ります
gzip -d -c man.tar.gz | /bin/tar xf -
for file in man1/*.1; do \
          mv $file $file.bak && \
          sed -e 's/\\fR(l)/\\fR(7)/' $file.bak >$file && \
          rm -f $file.bak || exit; \
        done
  ・
  ・
make[1]: ディレクトリ `/home/postgres/postgresql-8.2.4/config' から出ます
All of PostgreSQL successfully made. Ready to install.

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

$ make check

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

  ・
  ・
============== shutting down postmaster               ==============
server stopped
=======================
 All 103 tests passed.
=======================
make[2]: ディレクトリ `/home/postgres/postgresql-8.2.4/src/test/regress' から出ます
make[1]: ディレクトリ `/home/postgres/postgresql-8.2.4/src/test' から出ます

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

$ make install

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

make -C doc install
make[1]: ディレクトリ `/home/postgres/postgresql-8.2.4/doc' に入ります
gzip -d -c ./postgres.tar.gz | ( cd /usr/local/pgsql/doc/html && /bin/tar xf - )
/bin/tar: 2560 バイトを - から読み込み
for file in man1/*.1 man7/*.7 ; do \
          /bin/sh ../config/install-sh -c -m 644 $file /usr/local/pgsql/man/$file || exit; \
        done
  ・
  ・
make[1]: ディレクトリ `/home/postgres/postgresql-8.2.4/config' から出ます
PostgreSQL installation complete.

データベースの初期化

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

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

初期設定

初期設定は運用によってかなり修正内容が異なる場合があります。
公式のドキュメントを参考にして修正をしてください。
設定ファイルは下記のディレクトリ下にあります。

/usr/local/pgsql/share/
/usr/local/pgsql/data/

自動起動設定

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

$ exit

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

# cp /home/postgres/postgresql-8.2.4/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 user be allowed to create databases? (y/n) y
Shall the new user be allowed to create more new users? (y/n) y
CREATE USER
createuser creates a new PostgreSQL user.

注:Web上のスクリプトから新しいデータベースを作成したり、ユーザーを追加するようなスクリプトを利用しない場合は n 、n を選択するようにしましょう。
不用意に y を選択すると、セキュリティーホールなどをつっつかれて危険が増す可能性があるので注意してください。

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

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

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

その他

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

バキューム(最適化)処理、バックアップ方法

$ vacuumdb -a
$ pg_dumpall > ~/backup20070511.pgsql

注:上記は backup + 日付 を記載したSQLファイルを作成しています。
スクリプトなどを組んでcronで定期処理すると便利でしょう。

リカバリー方法

$ psql -f backupYYYYMMDD.pgsql template1

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



Last-modified: 2015-04-23 (木) 15:22:49 (1187d)