インストール方法(Linux版):PostgreSQLのインストール

PostgreSQLは オープンソースの本格的な RDBMS(Relational Database Management System) です。
PostgreSQLに関する詳細は、日本PostgreSQLユーザー会の公式サイト(http://www.postgresql.jp/)をご参照ください。
(ソースをダウンロードする際は、「ダウンロード」→「最新の更新」とクリックしていき、
必要なバージョンを選択し「ソース版のダウンロード」から任意のダウンロードサイトを選択してください)
desknet's Blogをお使いいただけるPostgreSQLのバージョンについては、『動作環境』をご参照ください。

※ここに挙げる手順は一例です。 お客様の環境によっては、別途パッケージのインストールが必要な場合、
 手順やインストールディレクトリが異なる場合があります。

1.ファイルをサーバに転送

ダウンロードしたファイルをサーバ上にFTP転送します。
フリーウェア等のFTPツールをお使いいただくか、もしくはWindows付属のFTPコマンドで、
サーバにダウンロードしたtarファイルを転送します。

2.telnetでログイン

Windows付属のtelnetやフリーウェアのtelnetツールで、サーバにログインします。

3.パッケージソースの展開

suコマンドを実行し、rootユーザーにスイッチしてください。
FTP転送したファイルからパッケージソースを展開します。
※FTP転送したファイルが「/home/guest/」にあるものとします。

[guest@xxxxxx guest]$ su -
Password:
[root@xxxxxx guest]# cd /usr/local/src/
[root@xxxxxx src]# tar xvzf /home/guest/postgresql-8.1.4.tar.gz

展開が終了すると、/usr/local/src/下にpostgresql-8.1.4というディレクトリが作成されます。

4.PostgreSQLのインストール

パッケージの構成(Configuration)を行なうために、configureスクリプトを実行します。
ここでは、特にコマンドラインオプションを使用せずにデフォルトで構成します。
configureスクリプトは、ソースを展開したディレクトリに移動して実行します。

[root@xxxxxx src]# cd /usr/local/src/postgresql-8.1.4/
[root@xxxxxx postgresql-8.1.4]# ./configure
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu


(略)


config.status: linking ./src/makefiles/Makefile.linux to src Makefile.post
[root@xxxxxx postgresql-8.1.4]#

「readline」「zlib」がインストールされていない場合は、yumでインストールしてから「configure」を実行してください。

[root@xxxxxx postgresql-8.1.4]# yum install readline*
[root@xxxxxx postgresql-8.1.4]# yum install zlib-devel
[root@xxxxxx postgresql-8.1.4]# ./configure --without-readline --without-zlib

次にパッケージの構築(Make)を行ないます。
パッケージの構築には GNU make を使用します。
構築作業には、ハードウェアに依存しますが5分から30分ほど掛かります。

[root@xxxxxx postgresql-8.1.4]# gmake


(略)


All of PostgreSQL successfully made. Ready to install.
[root@xxxxxx postgresql-8.1.4]#

パッケージの構築が完了したら、インストールを行なう前にPostgreSQLが想定通りに動作することを検証するための
リグレッションテストを行なうことができます。
リグレッションテストは、特権ユーザー(root)では動作しませんので、任意の非特権ユーザーで実行します。
ここでは「neo」というユーザーで実行しています。

[root@xxxxxx postgresql-8.1.4]# su - neo
[neo@xxxxxx ~]$ cd /usr/local/src/postgresql-8.1.4/
[neo@xxxxxx postgresql-8.1.4]$ gmake check


(略)


gmake[2]: ディレクトリ '/usr/local/src/postgresql-8.1.4/src/test/regress'から出ます
gmake[1]: ディレクトリ '/usr/local/src/postgresql-8.1.4/src/test'から出ます
[neo@xxxxxx postgresql-8.1.4]$

最後にパッケージをインストールします。この作業は特権ユーザー(root)で行ないます。

[neo@xxxxxx postgresql-8.1.4]$ su -
Password:
[root@xxxxxx ~]$ cd /usr/local/src/postgresql-8.1.4/
[root@xxxxxx postgresql-8.1.4]# gmake install


(略)


PostgreSQL installation complete.
[root@xxxxxx postgresql-8.1.4]#

5.管理ユーザー作成

PostgreSQLのインストールが完了したら、データベースの管理ユーザーを作成します。

[root@xxxxxx guest]$ su -
Password:
[root@xxxxxx ~]# useradd postgres

必要に応じてpasswdコマンドによってユーザーのパスワードを設定してください。
管理ユーザーは今後PostgreSQLの管理コマンドを利用しますので、作成したpostgresユーザーの環境変数にPATHを設定します。
通常はユーザーのホームディレクトリ下の「.bash_profile」ファイルをviなどで編集して次の記述を追加します。

[root@xxxxxx ~]# cd /home/postgres
[root@xxxxxx postgres]# vi .bash_profile
# .bach_profile

#Ger the aliases and functions
if [ -f ~/.bashrc ]:then
. ~/.bashrc
fi

# User specific environment and startup programs

PATH=/usr/local/pgsql/bin:$PATH:$HOME/bin

export PATH

6.データベース作成

PostgreSQLのデータベースを作成します。
まず、データベースファイルを配置するディレクトリを作成し、ディレクトリの所有者を管理ユーザー(postgres)に変更します。
この例では、データベースファイルの格納先を /var/pgsql/data としています。

[root@xxxxxx postgres]# cd /var
[root@xxxxxx var]# mkdir pgsql
[root@xxxxxx var]# cd pgsql
[root@xxxxxx pgsql]# mkdir data
[root@xxxxxx pgsql]# cd ..
[root@xxxxxx var]# chown -R postgres:postgres pgsql

次に管理ユーザーにて、データベースを作成します。
-Dオプションでデータベースファイルの格納先を指定します。

[root@xxxxxx var]# su - postgres
[postgres@xxxxxx ~]$ cd /usr/local/pgsql/bin
[postgres@xxxxxx bin]$ ./initdb --encoding=utf8 --no-locale -D /var/pgsql/data


(略)


Success. You can now start the database server using:

/usr/local/pgsql/bin/postmaster -D /var/pgsql/data
or
/usr/local/pgsql/bin/pg_ctl -D /var/pgsql/data -l logfile start
[postgres@xxxxxx bin]$

これで、PostgreSQLを起動する準備が整いましたので、PostgreSQLの管理コマンドを利用してPostgreSQLを起動します。
正常に起動できたら、テスト用のデータベースを作成して接続してみます。

[postgres@xxxxxx bin]$ ./pg_ctl -D /var/pgsql/data -l logfile start
postmaster starting
[postgres@xxxxxx bin]$ ./createdb test
CREATE DATABASE
[postgres@xxxxxx bin]$ ./psql test
Welcome to psql 8.1.4,the PostgreSQL interactive terminal.

Type: ¥copyright for distribution terms
¥h for help with SQL commands
¥? for help with psql commands
¥g or terminate with semicolon to execute query
¥q to quit
test=#

このように表示されれば、データベースは正常に稼動しています。

test=#
test=#¥q
[postgres@xxxxxx bin]$
[postgres@xxxxxx bin]$ ./dropdb test
DROP DATABASE
[postgres@xxxxxx bin]$

¥qで、psqlから抜けることができます。
testのデータベースが不要の場合は削除してください。

7.データベースの自動起動設定

PostgreSQLが正常に稼動したら、サーバの電源投入時にデータベースが自動的に起動するように設定をします。
/etc/rc.d/rc.localに記述することもできますが、PostgreSQLに同梱されている自動起動スクリプトを利用して、chkconfigコマンドによる設定を行ないます。
作業は特権ユーザー(root)で行ないます。

PostgreSQLで配布されるソースの中にあるcontrib/start-scripts/linuxファイルを
/etc/rc.d/init.d下にpostgresqlというファイル名でコピーし、実行権限を与えます。

[postgres@xxxxxx bin]$ su -
Password:
[root@xxxxxx ~]# cd /usr/local/src/postgresql-8.1.4/contrib/start-scripts
[root@xxxxxx start-scripts]# cp linux /etc/rc.d/init.d/postgresql
[root@xxxxxx start-scripts]# chmod 755 /etc/rc.d/init.d/postgresql

postgresqlファイル内に、パスの記述を設定する所があります。
この中の、データベースファイルの格納先(PGDATA)の記述を環境に合わせて変更します。
PGDATAの環境を「PGDATA="/usr/local/pgsql/data"」を「PGDATA="/var/pgsql/data"」に変更します。

[root@xxxxxx start-scripts]# vi /etc/rc.d/init.d/postgresql
#! /bin/sh

# chkconfig: 2345 98 02


(略)


# Data directory
PGDATA="/var/pgsql/data"

#Who to run the postmaster as, usually "postgres", (NOT "root")
PGUSER=postgres


(略)

スクリプトの準備ができたら、chkconfigコマンドによる設定を行ないます。

[root@xxxxxx ~]# su -
[root@xxxxxx ~]# chkconfig --add postgresql
[root@xxxxxx ~]# chkconfig --list | grep postgresql
postgresql 0:off 1:off 2:on 3:on 4:on 5:on 6:off

サーバの電源投入時にデータベースが自動的に起動するように設定されました。
サーバを再起動して、データベースが自動起動されていることを確認してください。

8.VACUUM(バキューム)の設定

PostgreSQLの通常動作では、削除されたタプルや更新によって不要となったタプルはテーブルから物理的に削除されません。
これらのタプルはVACUUMが完了するまで存在し続けます。そのため、特に更新頻度が多いテーブルでは、
VACUUMを定期的に実行する必要があります。(VACUUMコマンドを実行しないと、性能が劣化する恐れがあります。)

autovacuum機能を使うと、VACUUMとANALYZE コマンドの実行を自動化することができます。
autovacuumの設定は、データベース構成ファイル(postgresql.conf)に設定があります。
データベース構成ファイルはデータディレクトリ(今回の例では、/var/pgsql/data)にありますので、viなどのエディタで編集します。

データベース構成ファイルを開き、「RUNTIME STATISTICS」セクションのstats_start_collectorおよびstats_row_levelディレクティブ、
「AUTOVACUUM PARAMETERS」セクションのautovacuumディレクティブにて設定します。
この項目は、デフォルトでコメントアウトされているのでアンコメントしそれぞれをonに設定します。

[root@xxxxxx ~]# su - postgres
[postgres@xxxxxx ~]$ cd /var/pgsql/data
[postgres@xxxxxx data]$ vi postgresql.conf
# -----------------------------
# PostgreSQL configuration file
# -----------------------------


(略)


# -----------------------------
# RUNTIME STATISTICS
# -----------------------------

# - Statistics Monitoring -

#log_parser_stats = off
#log_planner_stats = off
#log_executor_stats = off
#log_statement_stats = off

# - Query/Index Statistics Collector -

stats_start_collector = on
#stats_command_string = off
#stats_block_level = off
stats_row_level = on
#stats_reset_on_server_start = off


# -----------------------------
# AUTOVACUUM PARAMETERS
# -----------------------------

autovacuum = on


(略)


9.PostgreSQLを再起動

設定が終わりましたらPostgreSQLを再起動を行います。

[postgres@xxxxxx data]$ exit
[root@xxxxxx ~]#
[root@xxxxxx ~]# cd /etc/rc.d/init.d
[root@xxxxxx init.d]# ./postgresql restart
Restarting PostgreSQL: postmaster stopped
ok

オンラインマニュアル目次へ戻る

ページの先頭へ戻る