Linuxの奨め

Linuxを使ってみませんか その2

1999-12-27 改訂
初めに
 
 Linuxを使い始めて、インターネット・サーフなどしていると次はそろそろ発信する側にたった具体的なアプリケーションに使ってみたくなった。
 
 1. 先ず手始めにLAN内にApatcheによるイントラネット・サーバを構築しデータベースなどネットワークを利用したアプリケーションを試すことにした。

 2. WWWサーバを使うことによりPerlなどでCGIが作り易くなったのもその一つだが、かねてからSQLを使用したネットワークにまたがる本格的なデータベース・サーバーも使ってみたかったので、ホームページとりわけCGIと組み合わせて使用できるようなアプリケーションを使ってみることにした。

 3. 使うことにしたのはPostgreSQLというリレーショナル・データ・ベースで一応標準的なSQL言語が使え、膨大なデータの検索にも十分耐えられる性能を持ったものである。それとPHPというスクリプト言語でその中でデータベースが扱えるものである。

PostgreSQLのインストールで躓く

 PostgreSQLは「PostgreSQL完全攻略ガイド」(初版)という本のお奨めに従ってインターネットから最新のソース・コードであるversion6.5.2をダウンロードしてコンパイルするところから始めた。どうやらコンパイルとインストール作業はうまくいったようなのだが、環境設定で躓いてしまった。先ず環境変数が何者なのか、何を目的にしたものか判っていない。Apatcheの時もそうだったが先ず環境変数なるものが出てきてバージョンによって違うようなことが書いてある。幾つかの環境変数を使おうとして本の通りに記述すると... undefind variable というメッセージがシステム起動時にもユーザー・ログイン時にも、至る所で出てきてしまい、よくわからない。

 原因は自分の機械に合わせて設定をしていなかったからである。マニュアルも英文であるから簡単に斜め読みが出来ない。例によって行き詰まって万策つきるまでは読まないことにする。本当は苦労しても先に読んでおくべきであったのに。それと後で判ったことだがバージョンによって色々な違いがあったらしく、手始めにいきなりインターネットからダウンロードしたのは無謀だった。

 「PostgreSQL完全攻略ガイド」には付録のCD−ROMの中に幾つかのプラットフォームに対応したパッケージが付いている。これも試してみたが旨く行かない。本は色々なプラットフォームに対応した記述になっているので細かな違いまで説明がない。以前懲りたのでこういうときは迂回作戦を取ることにする。

 じつはLinuxの世界ではハードウェアがi386とかMACかの違いが導入するLinuxの違いに先ず影響し、次にどのパッケージを選ぶかによってその中に含まれるいろいろなファイル、ことにLIBに違いがでてくる。だからパッケージに含まれるツールの有無とそれらのバージョンとかが、PostgreSQLを組み込むときに影響してくる。勿論その影響をなくすために Windows のようにバイナリーをインストールするのではなくいちいち Configure だとか make だとかの手順を踏んでコンパイルして行くわけだがそうはいっても本の中にそれらの全ての違いが載っているわけでないので、いろいろな現象が発生して旨くいかなくなり行き詰まるのである。

 だからバージョンだとかパッケージだとかをOSとWEBとPHPとデータベースソフトというように組み合わせていくと組み合わせが増えますます複雑怪奇になって行くのである。それに欲があってせっかくインターネットから最新のバージョンが得られるのに2つも3つも前のバージョンが使いたくないのである。実はこれらが全て躓きの元となり押し寄せてきた。2〜3ヶ月のトンネルに入り込んだのである。しかたなく単純化するためまずはPostgreSQLを単体で使えるようにすることから始めた。

 そこで別に雑誌の増刊号の中に Plamo 版 PostgreSQL パッケージがあったのを探しそれを Plamo Linux 導入機にインストールしてみた。さすが Plamoに パッケージ化されたものは便利で環境設定などもすんなり出来ていて PostgreSQL がすぐに使えるようになった。

 使うのはLAN接続されたWindows98からでも、別のLinux搭載機からでよい。telnetでアクセスし、早速簡単なSQLで使うことにした。丁度パソコン同好会の名簿の最新版をEメールで受け取った時だったので早速Excelの名簿ファイルをタブ区切りのCVSテキスト・ファイルに変換し更にEUC漢字コードに変換したものをFTPでPlamo Linux機にアップロードし、それをSQLでテーブルにコピーしてみた。

 ところがpipe brokenというエラー・メッセージとともにデータ・ベースからはじき出されてしまう。2レコード位に短くするとOKになった、なにやらSQLとかRDBMSのルール違反をやっているらしい。本格的にSQLを勉強する必要がありそうである。とにかく取っかかりは出来た。

SQLの習得を開始、テーブルの作成を試みる

 近くの本屋へ行ってみたところ「SQLデータベース構築入門」という本が一種類しかない、付録のCD−ROMはRedHat LinuxとそのAplication用のものが各1枚、Free BSDのOSが1枚付いていて殆ど不要なのだが、そのためか値段が高い、しかしApacheのとき購入したシリーズと同じで内容的に信頼が置けるので取りあえずこれを読むことにした。

 手始めに本の付録に郵政省の〒番号のリストのデータを利用してデータベーステーブルを構築する例題があるので、これを試して見た。先ず出会った問題は、付録の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というエラーがあり、これにも悩まされた。フィールドの長さは入れ物の方が短くてもエラーには為らない。

テーブルを利用したデータ操作の習得を試みる

 作成したテーブルを使い、psqlというSQLのインタプリタの使い方から操作に入った。テーブル操作用も含め60個ばかりのコマンドがまずあり、Syntaxはヘルプを使い表示させることが出来る。この他バックスラッシュ・コマンドというpsqlの内部コマンドも30以上ある。まずデータベースの問い合わせを色々試みた。テータの管理も試みた。データの型、マルチバイト文字といっても色々な日本語コードが使用できる。図形関係のデータ型もある。関数はリストしてみたところバリエーションを入れると800くらいある。演算子も豊富である。正規表現も色々使える。エクセル程度しか使っていないので、こんなに沢山使えるとすごく満悦気分になれる。地理データ型(オペレータ、関数)等というのもある、どんな使い方をするものなのだろう。使っている前述の本はPostgreSQLの解説書であってSQLの解説書ではないので詳しいことは載っていない。

 

GUIを利用したデータ操作を試みる

 Windows98とかWindowsNTのコントロール・パネルをひらくとODBCというアイコンがあり何に使うものだろうとかねて思っていた、ところがどうにもpsqlというインターフェースが使いにくい、前述の書物を読んで行くとAccessとかExcelとからPostgreSQLtが管理しているデータベースのデータが利用できるとあり、しかもODBC(Open Database Connectivity)という接続規格を用いてそれを実現できると有るではないか。

 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のままである。

 これはこれでデータベースを構築していくのに便利であるが外にも確かめておきたいアプリケーションが有るのでひとまず区切りとする事にした。

  

PHPを使ってPostgreSQLにアクセスすることができる

 PHPを使ってPostgreSQLにアクセスすることができる上にperl等でCGIを作るよりHTMLの中にPHPで書いたプログラムを埋め込むことが出来るとある。Perl等でのCGIは作るのも難しいし、バク・エラーの究明が面倒で途中で中断したままのものが幾つもある。どうもPHPだとデバッグで楽が出来るらしいということに惹かれてこれを使うことにした。Apatche のモジュールとすることとPostgreSQLへのインターフェスを有効にするようにオプションをつけてインストール作業を開始する。だが初手からconfigureでエラーで引っかかってしまった。環境変数だとか漢字変換機能だとか、パッチバージョンだとか問題が色々あるらしい。

 まず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のテーブルを作成してくれるのは全くありがたい。

   まだまだ完全なサーバーの構築にはほど遠いが基本的なツールは出来た。これから枝葉をつけて行く必要がある。

 
                                            以上

homeLuinux4へ戻る