Linux版インストール方法:PostgreSQLのインストール
PostgreSQLは オープンソースの本格的な RDBMS(Relational Database Management System) です。
PostgreSQLに関する詳細は、日本PostgreSQLユーザー会の公式サイト(http://www.postgresql.jp/)をご参照ください。
desknet's FAQをお使いいただける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.3.tar.gz |
展開が終了すると、/usr/local/src/下にpostgresql-8.3というディレクトリが作成されます。
4.PostgreSQLのインストール
パッケージの構成(Configuration)を行なうために、configureスクリプトを実行します。
ここでは、特にコマンドラインオプションを使用せずにデフォルトで構成します。
configureスクリプトは、ソースを展開したディレクトリに移動して実行します。
[root@xxxxxx src]# cd /usr/local/src/postgresql-8.3/ [root@xxxxxx postgresql-8.3]# ./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.3]# |
「readline」「zlib」がインストールされていない場合は、yumでインストールしてから「configure」を実行してください。
[root@xxxxxx postgresql-8.3]# yum install readline* [root@xxxxxx postgresql-8.3]# yum install zlib-devel [root@xxxxxx postgresql-8.3]# ./configure --without-readline --without-zlib |
次にパッケージの構築(Make)を行ないます。
パッケージの構築には GNU make を使用します。
構築作業には、ハードウェアに依存しますが5分から30分ほど掛かります。
[root@xxxxxx postgresql-8.3]# gmake ・ ・ (略) ・ ・ All of PostgreSQL successfully made. Ready to install. [root@xxxxxx postgresql-8.3]# |
パッケージの構築が完了したら、インストールを行なう前にPostgreSQLが想定通りに動作することを検証するための
リグレッションテストを行なうことができます。
リグレッションテストは、特権ユーザー(root)では動作しませんので、任意の非特権ユーザーで実行します。
ここでは「neo」というユーザーで実行しています。
[root@xxxxxx postgresql-8.3]# su - neo [neo@xxxxxx ~]$ cd /usr/local/src/postgresql-8.3/ [neo@xxxxxx postgresql-8.3]$ gmake check ・ ・ (略) ・ ・ gmake[2]: ディレクトリ '/usr/local/src/postgresql-8.3/src/test/regress'から出ます gmake[1]: ディレクトリ '/usr/local/src/postgresql-8.3/src/test'から出ます [neo@xxxxxx postgresql-8.3]$ |
最後にパッケージをインストールします。この作業は特権ユーザー(root)で行ないます。
[neo@xxxxxx postgresql-8.3]$ su - Password: [root@xxxxxx ~]$ cd /usr/local/src/postgresql-8.3/ [root@xxxxxx postgresql-8.3]# gmake install ・ ・ (略) ・ ・ PostgreSQL installation complete. [root@xxxxxx postgresql-8.3]# |
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.3,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.3/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」セクションのtrack_countsディレクティブ、
「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 # ----------------------------- # - Query/Index Statistics Collector - #track_activities = on track_counts = on #update_process_title = on # - Statistics Monitoring - #log_parser_stats = off #log_planner_stats = off #log_executor_stats = off #log_statement_stats = 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 |