原因は自分の機械に合わせて設定をしていなかったからである。マニュアルも英文であるから簡単に斜め読みが出来ない。例によって行き詰まって万策つきるまでは読まないことにする。本当は苦労しても先に読んでおくべきであったのに。それと後で判ったことだがバージョンによって色々な違いがあったらしく、手始めにいきなりインターネットからダウンロードしたのは無謀だった。
「PostgreSQL完全攻略ガイド」には付録のCD−ROMの中に幾つかのプラットフォームに対応したパッケージが付いている。これも試してみたが旨く行かない。本は色々なプラットフォームに対応した記述になっているので細かな違いまで説明がない。以前懲りたのでこういうときは迂回作戦を取ることにする。
じつはLinuxの世界ではハードウェアがi386とかMACかの違いが導入するLinuxの違いに先ず影響し、次にどのパッケージを選ぶかによってその中に含まれるいろいろなファイル、ことにLIBに違いがでてくる。だからパッケージに含まれるツールの有無とそれらのバージョンとかが、PostgreSQLを組み込むときに影響してくる。勿論その影響をなくすために Windows のようにバイナリーをインストールするのではなくいちいち Configure だとか make だとかの手順を踏んでコンパイルして行くわけだがそうはいっても本の中にそれらの全ての違いが載っているわけでないので、いろいろな現象が発生して旨くいかなくなり行き詰まるのである。
だからバージョンだとかパッケージだとかをOSとWEBとPHPとデータベースソフトというように組み合わせていくと組み合わせが増えますます複雑怪奇になって行くのである。それに欲があってせっかくインターネットから最新のバージョンが得られるのに2つも3つも前のバージョンが使いたくないのである。実はこれらが全て躓きの元となり押し寄せてきた。2〜3ヶ月のトンネルに入り込んだのである。しかたなく単純化するためまずはPostgreSQLを単体で使えるようにすることから始めた。
使うのはLAN接続されたWindows98からでも、別のLinux搭載機からでよい。telnetでアクセスし、早速簡単なSQLで使うことにした。丁度パソコン同好会の名簿の最新版をEメールで受け取った時だったので早速Excelの名簿ファイルをタブ区切りのCVSテキスト・ファイルに変換し更にEUC漢字コードに変換したものをFTPでPlamo Linux機にアップロードし、それをSQLでテーブルにコピーしてみた。
ところがpipe brokenというエラー・メッセージとともにデータ・ベースからはじき出されてしまう。2レコード位に短くするとOKになった、なにやらSQLとかRDBMSのルール違反をやっているらしい。本格的にSQLを勉強する必要がありそうである。とにかく取っかかりは出来た。
手始めに本の付録に郵政省の〒番号のリストのデータを利用してデータベーステーブルを構築する例題があるので、これを試して見た。先ず出会った問題は、付録のCD−ROMのデータは「,」区切りであるが、PosthreSQLのバージョンの違いのためか、本の例のようにSQLのCOPYステートメントでdelimiterの指定が使えない、仕方がないので一旦Windows98機に送り、エクセルを利用してタブ区切りのファイルに変換した。この変換が実は直ぐに旨くできなかった、色々原因を調べてみると、EUC漢字のままだとエクセルが「,」をEUC漢字と混同してしまうことが原因であった。
そこで「秀丸」を利用して、EUCをShift-JISに変換してから試みてみるとエクセルで「,」区切りをタブ区切りのファイルに変換できた。これを再び秀丸でEUC漢字のデータに戻してからデータベース・サーバー機に戻し、テーブルにCOPYしたところやっとOKになった。
そこでPC同好会の名簿からデータベースの作成に再度挑戦することにした。最初はやはりpipe broken になる、買ってきた本を読んだ範囲には書いてないものの、とかくカタカナ半角は悪さをするので、データの中の半角カタカナの欄を先ず全角に変換することにした。何か無いかとエクセルの関数を調べてみると半角を全角に変換する関数が見つかった。EUC漢字は誤認されることが判っているのでこれも予めShift-JISに変換しておくことにする。エクセルで作業をできたものを元に変換し、データベース・サーバー機に戻し再度テータベースのテーブルを作成したところ、すんなりOKになった。やはり半角のカタカナが原因であった。
COPYのトラブルはこの他に入力する方のデータのタイプが一致しないときresetting connectionというエラーがあり、これにも悩まされた。フィールドの長さは入れ物の方が短くてもエラーには為らない。
ACCESSは使ったことがないのでEXCELで調べてみると「外部データの取り込み」というコマンドがある。早速ヘルプをよみWindows側からODBCを使えるように設定を試みた。この本にはPostgreSQLの日本語版ODBCドライバーというもののインストール方法も述べられているので早速インストールした。コントロール・パネルでODBCデータソースというものの作り方も書いてありその通りに作成してみた。その後ACCESSから接続する方法が述べられていて簡単に繋がるように書いてある。しかしEXCELの方からの使用方法は書いてない、EXCELのヘルプを色々調べてみたがよく判らない。
インターネットでもすこし探してみたが見つからなかった。ACCESSがあれば簡単らしいがPosrgreSQLがあるのにわざわざ購入しても本格的に使うわけではなく、単にODBCのテストに終わってしまうだけなのであまりにもお金の無駄使いになる、やはりEXCELから利用する方法を見つけなければならない。
困ったときの手段のひとつは詳しく説明が記述されている本を探すことである。早速本屋で探したところ「PostgreSQL詳解」というODBCを詳しく説明した本を見つけることが出来た。たった10ぺージ程度詳しく書いてあるが外の所は別の本とダブっているので4800円は高い買い物である。
この本によれば更にActiveX Data Objectというものをインストールする必要があると言うことが判った。附録のCDROMにはこれが収められていてインストール方法も詳しく説明されているので、楽にインストールすることが出来た。EXCELからの接続方法も載っている、しかしながらどうも旨くいかない。いろいろなものをいじくり回したのでバージョンがちぐはぐになってしまったらしい。日を改め最初からやりなおしたところやっとの事で旨くいくようになった。Windows98の方は出来るようになったがWindowNTの方もいじくり回したのでこちらはNGのままである。
これはこれでデータベースを構築していくのに便利であるが外にも確かめておきたいアプリケーションが有るのでひとまず区切りとする事にした。
まずApatcheに対しての組み込み方が2通りあり、DSO機構を使う方法と使わない方法があるので色々試してみる。PostgreSQLとは一旦切り離して、PHPをApacheに組み込むことだけを試みることにした。本屋へ行くと完全攻略ガイドの改訂版がでていた。configureのところをみると色々違っている、ここでバージョンの違いや、パッチの有無などもこれに絡んでいることが判る。家に帰り本屋でメモをしてきたとおりにやると旨く行く、それはそうである、configureなる作業がバージョンや含まれるバグの修正をやっているのであるから改訂版に記述されているソースのバージョンが自分がインターネットからダウンロードしたものと一致するようになったからである。
configurを通るようになっても、次にmakeで引っかかる、初めはコンパイルをスタート後直ぐに引っかかっていたのがだんだん経過時間が増えた頃に引っかかるようになって行き、オプションやバージョンなどを足したり引いたりしていくと、何日目かの何十回目に旨く通るようになった。はやる心を抑えてApacheのsrc/modules/php3を調べてみると幾つかのファイルが入って居るではないか、早速今度はApacheのコンパイルにとりかかりこれは直ぐにOKとなった。Apacheの設定ファイルhttpd.confを手直ししてindex.php3を作成し、<?php phpinfo() ?> という記述をする。Windows98マシンからブラウザでアクセスしてみる、見事PHPの情報が得られた。やれやれである。ところが難関はまだまだ続いた。
今度はPostgreSQLも組み込まなければならない。前述の3冊の本のそれぞれ異なるプラットホームを基にした記述はlinuxPPC(Mac)とかFreeBSDとかPlamoの1年ほど前のバージョンのものであるのに、自分機械はApacheとPHPはインターネットから最近ダウンロードしたもの、PostgreSQLは1年くらい前のバージョンというというちくはぐな状態で、次から次ぎへと変わったエラーがでてくる。
しばらく頭を冷やすことにして色々なホームページをサーフしていたところ「PHP徹底攻略」なる本のことが発刊されいるのに出くわした。近くの本屋には見あたらなかったので出たばかりらしい。2,3日して書店へ出かけると積んであったので早速購入してきた。
この本で一番嬉しかったことは自分の機械と同じ Plamo1.4.X をプラットフォームとして使用していたことである。始めの方はインストールできてから使いながら読むところである、後ろの方の十数ページ分のインストールの部分をまず読むことにした。出たばかりの本なので自分のロードしているバージョンと近い、PostgreSQLは新規にインストールをやり直すことにし、先に作成したテーブルのデータ等をバックアップし、インストールを始めたが30分ほどでOKになった。次はPostgreSQLのリグレッションテストである、これも又全項目がすんなりOKになった。
次が問題のApache + PHPのインストレーションである。念のために最初からこれもやり直すことにした。このインストレーションは何回もやっているので入力ミスをしたとき以外全て旨くいっている。/usr/local/apache/bin/httpd -l をやってみて mod_so.c が表示されたのでOKである。
いよいよPHPのコンパイルである。configureでは pgsql と Apache の apxs に対するオプションを指定する。configure も make も make install も悉くすんなりと通ってしまった。全てのソフトのバージョンの整合がとれているとこんなにも簡単にOKになってしまうものかと驚いた。変なエラーメッセージが出る度に色々調べ勉強になったもののどうも要らぬ苦労をし過ぎたようである。
最後にPHPが使えない問題が出たがこれはこの本の /usr/local/apache/conf/httpd.conf の修正方法の記述が1つ不足していたためで、以前の苦労が役に立ち LoadModule php3_module libexec/libphp3.so のコメントを外すことでOKになった。
このあとこの本の PostgreSQL の例題のデータベースを作成し、PHPと連携させてみた。サンプルプログラムの赤い棒グラフが表示され満悦である。ゴルフ同好会の名簿に早速応用してみた。たちどころにブラウザに名簿表が表示される。HTMLで名簿を表示させるのはいちいちテーブルを書くのが大変だが、PHPが自動的にHTMLのテーブルを作成してくれるのは全くありがたい。
まだまだ完全なサーバーの構築にはほど遠いが基本的なツールは出来た。これから枝葉をつけて行く必要がある。