データベースサーバで必要なハードウェアについて一般的なことは言えません。 予想されるユーザーの数、アプリケーションの種類、ネットワーク経路(network load)等に大きく依存しています。 2〜3人のユーザがいるだけでネットワークトラフィックも少ない最小な環境では RAM 16MB、i486程度のマシンで十分です。Linuxはリソースに関してはそれで 十分で、同時にさまざまなアプリケーションを起動するだけの馬力があります。 もちろんもっと速いプロセッサやRAMの増設をすればするほど高速化することもで きますが、プロセッサよりもRAMの容量の方が重要です。 RAMを増やせば増やすほど、障害を生じやすい集中的なメモリープロセスのディスク スワップが小さくなっていくのです。
32 MB RAM と PCIバスがあればスワップファイルなどを使わないで検索とソート を高速に行うことができます。
この文書で書かれているインストールは32 MB RAM、1.2 GB IDEハードディスクの IBM 686(133Mhz) で行っています。はじめからインストールするものとして以下、 必要な手順のリストを書きました。
この文書で取り扱うソフトウェアはCD-ROMやインターネットから入手できるもの です。以下のものを使います:
http://www.redhat.com
から。sunsite:apps/database/sql/msql-1.0.16
やCDROM(disc 4 of InfoMagic Linux Developer's
Resource, 6-CD set, December 1996)、
http://www.infomagic.comから入手します。
新しいバージョンは2.0.1です。オーストラリアのHughe氏のホームページ
(http://www.hughes.com.au)やその他ミラーサイトから入手できま
す。computer journal iX 8/1997, pages 150--152のMichael Schilli
氏によるCGIサンプルプログラム。ftpで入手
ftp.uni-paderborn.de:/doc/magazin/iX。
著者はRed Hat Linux Distribution 4.2からLinuxをインストールしています。
ちゃんとインストールするために、マシンはDOSでアクセスできるCDROMドライブ/
ブート可能なCDROMドライブか、Linux CDの以下の設定を盛り込んだブートディスク
のどちらかを持っているとよいでしょう。
インストールの途中でソフトウェアパッケージの選択と設定を行います。 以下のアイテムを選択しておいて下さい。
この文書ではネットワークインストールや初期設定の仕方は取り扱いません。 オンラインドキュメント(manページ、HTML、texinfo)や出版されている ドキュメント((Linux Bibleなどなど)を参照して下さい。
Red Hatのインストール方法は十分確立されていて、選択(ホスト名の指定など)を 普通に行うだけです。インストールが成功すれば、システムはすぐに稼働できます。
X Window Systemのインストールはサーバには必ずしも必要ではありませんが ローカルアクセスやテストが簡単になるので入れておくとよいでしょう。 Xのインストール方法はいくつかプログラムを使うことで行えます(XF86Setup は自己テストの機能(self-testing facilities)を装備していて、例えばビデオ クロックプログラミングなど難しい操作はほとんどありません)。必要なことは ソフトウェアがビデオアダプタを検出できるかどうかということだけです。 安価なアクセラレータグラフィックアダプタ(S64UV+の前身のTrio S64のような アダプタなど)は通常、特に何もしなくても(``out of the box'')動作します。
ここでシステムにApache, Perl, X Window Systemがすでにインストールされて
いるものとします。今後、ファイル/ディレクトリといった基本的なことはインストール
時のままとして話しを進めていきます。またホスト名はlocalhostとします。
このホスト名をインストールのテスト用に使います。全システムがちゃんと動作
したら適当な名前をつけます。/etc/hostsファイルなどを編集する
必要があることもおぼえておいて下さい。理想的にはこれらはroot用の管理者
ツールを使って行うべきです。
Linuxで使われるhttpサーバはApache(httpd)が有名です。
manページ(man httpd)でhttpデーモン(httpd)のインストールと稼働の仕方
について説明しています。しかし問題なくインストールできているならすでにサーバは
稼働されています。ディレクトリを確認します:/home/httpd/以下3つ
のサブディレクトリ../cgi-bin/、../html/、../icons/
があります(訳注:RedHat以外のディストリビューションではディレクトリが若干
違うかもしれません)。../html/ディレクトリにはindex.html
ファイルがあります。あとでこのファイルは各自のファイルindex.htmlに
置き換えて下さい。設定の情報は/etc/httpd/conf/に蓄積されています。
システムが十分に設定されていて、特にエラーもなくインストールができたならこれ
以上は必要ありません。
基本的にLinux用のブラウザには3つのものがあります:
Lynxは起動時にデフォルトURLを表示しようとします。これは常にインターネットに
接続していない場合にはちょっと厄介です。このデフォルトURLを変更する
(また他の設定も変更する)ために、システム管理者は/usr/lib/lynx.cfg
(訳注:または/usr/local/lib/lynx.cfgなど)ファイルを編集する必要が
あります。この設定ファイルは約57,000バイトと大きく不必要な情報を含んでいるも
のもあり、/usr/local/lib/ディレクトリをホームディレクトリとして記述
しています。
ファイルのはじめあたりにSTARTFILEではじまる行があるので、これを
以下のように変更します。
# STARTFILE:http://www.nyu.edu/pages/wsn/subir/lynx.html # STARTFILE:http://lynx.browser.org/ STARTFILE:http://localhost
index.htmlドキュメントを
表示するようになります。
[訳注:"Lynxについて"
LynxはVer2.5あたりから特別なパッチなしで日本語が通るように なりました。以下のサイトを参照してみて下さい。
Arenaも引数なしで起動するとデフォルトURLを表示します。このデフォルトURLは
実行ファイルに組み込まれていますが、環境変数WWW_HOMEによって変更
(overrun)することもできます。システム管理者は/etc/profileファイルに
WWW_HOME="http://localhost"となるように書き込んで下さい(bashなどの
場合はexportするようにします)。例えば、
WWW_HOME="http://localhost" export WWW_HOME
Netscapeは商用の製品でLinuxディストリビューションでは配布されていません。
(訳注:Caldera Open Linuxなど商用のディストリビューションではライセンス
されたNetscapeがついてくるものもあります)。
インターネットやCDROMのソフトウェアコレクションから入手できます。Netscape
は各プラットフォーム用にコンパイルされたバイナリ形式で配布されています。
インストールするにはアーカイブファイルを展開するディレクトリとして
/usr/local/Netscape/を作ります(訳注:アーカイブに附属の
インストールプログラムを使えば自動的に/usr/local/netscape/
ディレクトリを作ります)。
Javaライブラリを除くファイルは全てこのディレクトリ内にあります(Netscape
ライブラリについてはREADMEファイルを参照して下さい)。以下のように
してリンクをはります(/usr/local/bin/ディレクトリで作業をします)。
# ln -s /usr/local/Netscape/netscape .Netscapeは「Options」メニューで設定できます。「General Preferences」では 「Appearance」カードがあるので、「Home Page Location」に
http://localhostを指定します。Netscapeを終了するまえに、オプション
の保存を忘れないで下さい(「Options」---「Save Options」で)。次回の起動で
Apacheのページが開きます(訳注:これはローカルマシンのページで、Apache
インストール時に作られます)。
ブラウザとhttpサーバの最初のテストをします。適当なブラウザを起動すると
apache: red hat linux web serverのページが表示されます。このページでは
ファイルの場所とhttpサーバのインストールの基本を説明します。
もしこのページが表示されない場合はファイルが適当な場所にあるか、ブラウザの
設定が正しいかチェックしてください。ブラウザをもう一度開く前に設定ファイル
の編集を終らせて下さい。以上の設定が正しければ次にマシンのネットワーク設定
をテストします。ホスト名が設定ファイルに書いたものと違ったりネットワーク
セットアップが正しいかどうか。少なくとも/etc/hostsに以下の行が
あることをチェックします。これは重要です。
127.0.0.1 localhost localhost.localdomain
telnet localhost
とします(telnet はすでにマシンにインストールされています)。もしこれがおかし
ければ次の作業に移るまえにもう一度ネットワーク設定をチェックしておいて下さい。
データベースをインストールするには、netscapeといった上記のインストールよりも、 若干準備しておくことがあります。 ランタイムやアドミニストレーションがそれぞれ違うsqlデータベースエンジンが 2〜3あり、その中で一番わかりやすいシステムであるmsql(mini-sql)を使います。 このシステムはdavid hughes氏によるもので、シェアウェアです。 料金は使うバージョンに依ります。 商用的な使用の場合は250.00ドル(us)以上。個人ユーザの場合は65.00ドル(us)以上。 教育、非商用的な機関の場合はフリーで使うことができます。 正確な価格(figures)はデータベースに附属しているドキュメントのライセンスを 参照してください。ここに書いた価格はだいたいの目安として下さい。
なぜ著者がmsqlを選択したかその理由を2、3述べます。まず第一に
インストール/管理が簡単で、sql言語のカバーしている範囲が十分であることが
挙げられます。ここまで書いた時点で
alligator descartes' dbi faq (perl database interface faq)
に適当な説明が見つかりました。
From the current author's point of view, if the dataset is relatively small, being tables of less than 1 million rows, and less than 1000 tables in a given database, then mSQL is a perfectly acceptable solution to your problem. This database is extremely cheap, is wonderfully robust and has excellent support. [...]Msqlは2つのバージョン([日本語訳: 現在の作者の指摘によると、データセットが100,000列以下の表や1000以下の テーブルといった、比較的小さいものならmSQLは完全にあなたの問題を解決して くれます。このデータベースは安くしっかりしたもので優れたサポートがあります。 ]
msql-1.0.16, msql-2.0.1)が入手できます。
この違いはパフォーマンスの違い(小さい仕事では特に差はありません)や添付されて
いるソフトウェアの違い(新しいバージョンには多くのツール、スクリプトファイル
があります)によっています。以下この2つのバージョンでのインストールについて
それぞれ解説していきます(2〜3違いがあります)。
msqlはソースやELFサポートバイナリとして入手できます。ELFバイナリを使えば
インストールは簡単です。アーカイブファイルmsql-1.0.16.ELF.tgzは
そのパッケージ中にインストール先のディレクトリを含んだ形でパッケージ化され
ています。そのため展開する時にルートディレクトリで
展開するだけで適当なディレクトリにインストールされます。
もしmsql-1.0.16をコンパイルして、DBIインターフェースよりもMsqlPerlパッケージ
(この両者の違いについては後で述べます)を使う場合に、
MsqlPerlをテスト中「some instruction inside msql failed(msql内で命令が失敗
しました)」となることがあります。この場合MsqlPerlドキュメント
(patch.lost.tables)に書かれているパッチが必要です。特にmsqldb.c
の1400行( entry->def = NULL;)からの3行
        *(entry->DB) = 0;
        *(entry->table) = 0;
        entry->age = 0;
が大切です。
コードフラグは以下です。
        freeTableDef(entry->def);
        safeFree(entry->rowBuf);
        safeFree(entry->keyBuf);
        entry->def = NULL;
        *(entry->DB) = 0;
        *(entry->table) = 0;
        entry->age = 0;
        # make target
これがうまくいったら、システムは
Build of target directory for Linux-2.0.30-i486 complete
        # ./setup
と実行します。
./シーケンスはこのディレクトリのsetupコマンドを実行する
ために必要です。これを付けないと別のsetupが実行されてしまいます。
ソースディレクトリやrootインストールが必要かどうか聞かれます。この後
システムはコンパイラ、ユーティリティなどのソフトが使えるかテストします。
Ready to build mSQL.
You may wish to check "common/site.h" although the defaults should be
fine.  When you're ready, type  "make all" to build the software
        # make all
と実行して下さい。
make[2]: Leaving directory `/usr/local/Minerva/src/msql'
<-- [msql] done       
Make of mSQL complete.
You should now mSQL using make install
NOTE : mSQL cannot be used free of charge at commercial sites.
       Please read the doc/License file to see what you have to do.
make[1]: Leaving directory `/usr/local/Minerva/src'
/usr/local/bin/にソフトリンクを作ることで検索パス
に通るようにします。/usr/local/bin/ディレクトリに移動して
        # ln -s /usr/local/Minerva/bin/* .
と実行して下さい。
インストール後、データベースがちゃんと動作するかどうかテストします。 サーバデーモンをスタートさせるためにシステム管理者(root権限)としてコマンドを 実行します。
        # msqld &
(バックグランドでmsqlを実行するために、&を付けるのを忘れない
ようにして下さい)。以下のメッセージが表示されます。
mSQL Server 1.0.16 starting ...
Warning : Couldn't open ACL file: No such file or directory
Without an ACL file global access is Read/Write
rc.dスクリプトに書いておきます(
管理者だけがデータベースコマンドを実行できます)。
        # msqladmin create inventur
(訳注:このコマンドの実行で空のデータベースinventurが作られます)。
msqlはDatabase "inventur" created.と返答します。
/usr/local/Minerva/msqldb/ディレクトリに空の../inventur/
サブディレクトリができます。この新しいデータベースはアドミニストレーション
ツール(詳細はmsqlドキュメントに書かれています)を使って操作できます。
新しくパワフルなHugheのmSQLサーバがあり、以前のバージョンと2〜3の点で
インストールに違いがあります。msql-2のインストールをはじめから行うには
以下のステップをふみます。適当なディレクトリ(例えば/usr/local/msql-2/)
にアーカイブをコピーして展開します。
        # tar xfvz msql-2.0.1.tar.gz 
(訳注:アーカイブは以下のサイトから入手できます。
http://www.hughes.com.au/software/msql2/)
        # make target
と実行します。
targetsに変更してマシンタイプを選びます。新しいサブディレクトリ
Linux-(バージョン)-(CPU)/
このディレクトリに変更して以下のようにセットアップをスタートします。
        # ./setup
編集可能なsite.mmファイルがあります。ディレクトリ名
/usr/local/Minerva/を使っていることと思います。
保存したいですか?この場合INST_DIR=...の行に保存したいディレクトリ
名を書き込んで下さい。
データベースを構築します。
        # make
        # make install
インストールに成功すると以下のメッセージが表示されます。
[...]
Installation of mSQL-2 complete.
*********
**   This is the commercial, production release of mSQL-2.0
**   Please see the README file in the top directory of the
**   distribution for license information.
*********
msqlを作ります:
        # adduser msql
mSQLディレクトリのオーナーをmsqlに変更します。
        # cd /usr/local/Minerva
        # chown -R msql:msql *
次に/usr/local/bin/のデータベースバイナリへのソフトリンクを
作ります。
        # ln -s /usr/local/Minerva/bin/* .
以上です。
データベースサーバはmsql2d &コマンドによって開始され、
Mini SQL Version 2.0.1
Copyright (c) 1993-4 David J. Hughes
Copyright (c) 1995-7 Hughes Technologies Pty. Ltd.
All rights reserved.
        Loading configuration from '/usr/local/Minerva/msql.conf'.
        Server process reconfigured to accept 214 connections.
        Server running as user 'msql'.
        Server mode is Read/Write.
Warning : No ACL file.  Using global read/write access.
きっかけがあればmsql-2.0.1に附属しているマニュアルの印刷をしておくと よいでしょう:
        # gzip -d manual.ps.gz
        # lpr manual.ps
続いてインターフェースの構築を行いますが、新しく作ったSQLサーバを保存して
実行したほうがよいでしょう。そのほうが安心してインターフェースライブラリ
のテストができます。
perlを使う時に参考になることがらがCamel Book(訳注:「ラクダ本」と 呼ばれるものです)に書かれています。これは今回のモデルアプリケーションを も書かれています。基本的にCGIを経由してmsqlデータベースにアクセスする方法が 以下3つあります。 はじめにperlを使うかどうかということに関することです。 (この文書が対象としている)perlを使うなら二つの異なるインターフェースモデル のどちらかを選べます。perlを使う場合はmsql独自のスクリプト言語(Lite)も使う ことができます。非常にわかりやすく、C言語に近いクローンです。
この執筆の時点までにDBIと呼ばれるperlのデータベースインターフェースが 。 DBIは2,3の役立つ点があります:コマンド一つで多くの商用データベースを操作 できる統一されたアクセスコントロールが提供されています。与えられたシステム で実際のデータベースはプログラマからデータベースの横取り(pecularities)を 防ぐドライバを使ってアクセスできる。DBIを使うことでマーカーによる異なるデータ ベース間でスムーズな移行ができる。一つのスクリプトで複数のデータベースに アクセスできる。詳しくはDBI-FAQを参照して下さい。しかし一つ欠点もあります: DBIインターフェースはまた開発中でバージョンがどんどん変わっています(一カ月 も経たないうちに新しいものに変わってしまうこともあります)。同様にそれぞれの データベースドライバもアップデートされ特定のインターフェースバージョンに 依存していることもあります。初期にインストールしたユーザーはこの文書で挙げた バージョンをつ使わないといけないかもしれません。というのも他のバージョンでは 複雑になってしまったり、テストのトラブルシューティングも意味のないものに なってしまうことがあるからです。
MsqlPerl はperlスクリプトからmsqlに直接アクセスするためのライブラリです。 DBIインターフェースを回避してとてもコンパクトです。 msqlの両バージョンともよく動作しますが、その使い方は一般化されたDBI インターフェースを使う(promoted)ことはできません。 ですが小さいシステムでインストールが容易なので選択するインターフェースと します。特にDBIや特定のデータベースドライバよりもバージョンに依存しません。
msql-2ではスクリプト言語(Lite)を持っています。この言語はシェルライクな 特徴を追加したちょっと変わったものです(特定のPerlバージョンに似ています)。 Liteはシンプルな言語でmsql-2マニュアルに詳しく書かれています。msql-2 パッケージにはLiteを使った簡単なアプリケーションも附属しています。
Liteについては優れた文書(msql-2に特定した内容)があるのでここではLiteに ついては説明しません。またこの文書を読んでいる読者はperlについて基礎的な 理解があるものと想定しています。 ですがLiteをよく調べてみることをお奨めします。Liteはそのシンプルで 直観的な概念に関してmsql-2環境(他のデータベースで行われているような) での解決を提供している場合があります。
すでにシステム設定でperlをインストールしてあるか上記したパッケージマネージャを 使ってperlが入っているものとします。perlについては詳しく述べません。 perlのバージョンを見るには、
        # perl -v
とします。
perlは以下のメッセージを表示します。
This is perl, version 5.003 with EMBED
        Locally applied patches:
          SUIDBUF - Buffer overflow fixes for suidperl security
        built under linux at Apr 22 1997 10:04:46
        + two suidperl security patches
Copyright 1987-1996, Larry Wall
[...]
同じ動作をしているものをリネームするのが一つの方法ですが 内部構造が著しく変更されていることがあったりします。 そこで それまでは新しいバージョンに上がっていても、安全に使いたいのであれ ばここで紹介したバージョンにするよう心がけて下さい。
mSQL((DBD-mSQL)用のデータベースドライバはインターフェース(generic interface) DBIの後にインストールするということは重要です。
オリジナルのperlディレクトリを保存するために/usr/local/PerlModules/
ディレクトリを作ることから始めます。ディレクトリ名は特に決っていないので
これとは違う名前にすることもできます(どのperlモジュールのREADMEファイルにも
ディレクトリ名については書かれていません)。上記のアーカイブを
/usr/local/PerlModules/にコピーして、
# tar xzvf [archive-file]3つのアーカイブをそれぞれ展開します([archive-file]はアーカイブ名に 置き換えて下さい)。
3つのモジュールのインストールプロセスは通常通り行います(このドキュメント では各パッケージで重要なものだけを書き出してします)。
データベースインターフェースは特定のデータベースドライバをインストール
する前に入れておいて下さい。DBIアーカイブを展開すると
/usr/local/PerlModules/DBI-0.81/ディレクトリが作られるので
このディレクトリに移動します。READMEファイルとperl用makefileが
あります。
        # perl Makefile.PL
と実行して下さい。
次々とメッセージが表示されます。そのうち重要な箇所を引用します。
[...]
MakeMaker (v5.34)
Checking if your kit is complete...
Looks good
        NAME => q[DBI]
        PREREQ_PM => {  }
        VERSION_FROM => q[DBI.pm]
        clean => { FILES=>q[$(DISTVNAME)/] }
        dist => { DIST_DEFAULT=>q[clean distcheck disttest [...]
Using PERL=/usr/bin/perl
WARNING! By default new modules are installed into your 'site_lib'
directories. Since site_lib directories come after the normal library
directories you MUST delete old DBI files and directories from your 'privlib' 
and 'archlib' directories and their auto subdirectories.
Writing Makefile for DBI
        # make
と実行します。
もしエラーメッセージが出なければ(画面に表示されるプロトコルはエラーメッセージ
ではありません)、新しくインストールされるライブラリをテストします。
        # make test
表示される出力は[Shift]-[PgUp]でスクロールできます。
[...]
t/basics............ok
t/dbidrv............ok
t/examp.............ok
All tests successful.
[...]
DBI test application $Revision: 1.2 $
Switch: DBI-0.81 Switch by Tim Bunce, 0.81
Available Drivers: ExampleP, NullP, Sponge
ExampleP: testing 2 sets of 5 connections:
Connecting... 1 2 3 4 5 
Disconnecting...
Connecting... 1 2 3 4 5 
Disconnecting...
Made 10 connections in  0 secs ( 0.00 usr  0.00 sys =  0.00 cpu)
test.pl done
        # make install
このコマンドは十分に確認してから実行して下さい。
これ以上することはありません。もしなんらかの理由でインストールに失敗したら
忘れないうちに作業をやり直して下さい。
        # make realclean
ますはじめに。このコマンドは前のインストールで不用なものを削除します。
また画面の表示(以下省略して挙げました)をコピーしてインストールしたファイルも
削除できます。
Installing /usr/lib/perl5/site_perl/i386-linux/./auto/DBI/DBIXS.h
Installing /usr/lib/perl5/site_perl/i386-linux/./auto/DBI/DBI.so
Installing /usr/lib/perl5/site_perl/i386-linux/./auto/DBI/DBI.bs
[...]
Writing /usr/lib/perl5/site_perl/i386-linux/auto/DBI/.packlist
Appending installation info to /usr/lib/perl5/i386-linux/5.003/perllocal.pod
Installingをrmに置き換えます。これをuninstallに保存して
        # . uninstall
と実行すれば、インストールされたファイルが削除されます。
msqlドライバはperlデータベース(generic database)インターフェースの インストールがうまくいった後にインストールします。 インストール過程は上記したステップと同じです。
        # perl Makefile.PL
ここでシステムは添付ドキュメントを読むように警告を表示します。ここで
msqlの場所を見つけます。
$MSQL_HOME not defined. Searching for mSQL...
Using mSQL in /usr/local/Hughes
 -> Which version of mSQL are you using [1/2]? 
Splendid! Your mSQL daemon is running. We can auto-detect your configuration!
I've auto-detected your configuration to be running on port: 1114
        # make test
再び長い出力があり、
Testing: $cursor->func( '_ListSelectedFields' ). This will fail.
        ok: not a SELECT in msqlListSelectedFields!
Re-testing: $dbh->do( 'DROP TABLE testaa' )
        ok
*** Testing of DBD::mSQL complete! You appear to be normal! ***
        # make install
としてインストールします。
もう準備できたので次の節は飛ばしてください。
もしMsqlPerlの方を選んだなら、MsqlPerl-1.15.tar.gz以外に特定のデータ
ベースドライバ(generic database driver)は必要ありません。始めに書いたように
MsqlPerlはperlとデータベースサーバ間でDBIインターフェースを使わずに直接
やり取りをするからです。直接インストール、テストします。
perl Makefile.PLと実行するとユーティリティがスタートします。
はじめにどこにmSQLがあるか答えます。/usr/local/Minerva/なら
デフォルトのままでよいです。
そしてmake testとします。この前にtestというデータベース
があることを確認してパーミッションを読み書き可能にして下さい。
        # msqladmin create test
と実行します。
perlのCGIパートは3つのシンプルな段階にわかれています。以下のコマンドを 実行して下さい。
        # perl Makefile.PL
        # make 
        # make install
前のドライバと違い、このインターフェースはテストオプション
(# make test)を持っていません。ところが他のモジュールは 
任意のケースでテストされる必要があります。
CGIのサンプルスクリプトがあるサブディレクトリがこれで作られます。
このディレクトリの中身を/home/http/cgi-bin/にコピーして
スクリプトのテストのためにブラウザを起動してみて下さい。
以下の順に作業を進めます。