この文書は、私が管理している「Quid Pro Quo」を使ったWWWサーバ運営の手引きとして書かれてあります。したがって、異なるやり方でサーバを動かしたい人には、役に立たないかも知れません。私自身の勘違いや無知によるミスなどがあるかも知れません。その点をご理解の上、お読み下さい(記述ミスなどの指摘は文書末尾のメールアドレスまで)。
Macintosh でWWWサーバを構築するためには、「WWWサーバソフト」が必要です。MacOSX では「Apach」のような有名な無料のサーバソフトが利用できますが、MacOS 対応のApache はありません。代わりに、MacOS上でUNIX環境をエミュレートして稼働する「WebTen」という商用ソフトはあります。他にも、「WebSTAR」のような商用ソフトもありますが、ココでは可能な限りカネを掛けないでサーバを構築しようと考え、無料で使えるサーバソフトを探しました。最終的に検討したのは、以下の3つです。
- Web共有
Mac OS 8以上に標準添付されている機能。「機能拡張」フォルダに「Web共有機能拡張」を、「コントロールパネル」に「Web共有」があれば利用可能。Apple社純正だから、安定性やら相性やらは良いのだろう。だが、機能的には低く、まっとうには使い物にはならないと感じた。
- MacHTTP
当初シェアウェアとしてリリースされたが、その後「WebSTAR」になった。しかし、新たに開発が行われて、現在はフリーソフトとして公開されている。機能的には使用に耐えるだけのレベルがあるが、カウンタ機能が標準では使えない事や「レスポンスが遅い」との評言があったので、使用は見送った。消費メモリが少ない(初期設定値;約2MB)のが利点。
- Quid Pro Quo
そこそこ高機能と言えるが、そのぶんメモリ消費が多かったり(初期設定値;約5MB)、メモリリーク(ver.1.0.2)や不安定(ver.2.1.x)といった欠点もある。カウンタ機能やCGI機能が標準で添付されている。商用版として「Quid Pro Quo Plus」が存在。
結果的には「Quid Pro Quo」を使用することにします。現在無償公開されている「Quid Pro Quo」のバージョンは「1.0.2」と「2.1.2」「2.1.3」と3つあります。「2.1.3」は、かつて一時的に利用していたが、不安定でした。で、「安定している」と評判の「1.0.2」を利用することにしました。
[概要]「Quid Pro Quo」のインストーラをダウンロードします。「Quid Pro Quo」の公式ダウンロードサイトは、「socialeng.com」ですが、最近接続が出来ないようです。このような場合「ftp検索サイト」にて、「qpq」というキーワードを検索させると、幾つかのダウンロード可能なサイトが見つかることがあります。この方法で私の場合、琉球大学のftpサイトを見つけました。
[手順]
- 「Quid Pro Quo」のインストーラ(1.0.2)をダウンロード。「qpq1.0.2.hqx」「qpq1.0.2.bin」のどちらでも良いが(琉球大学のftpサイト)、今回は「.hqx」の方を。
- ダウンロードしたファイルを「Stuffit Expander」などにて解凍。「Install Quid Pro Quo 1.0.2」というファイル(インストーラ)が作成される。
[概要]インストールしたのち、「Quid Pro Quo」を起動させてみます。
[手順]
- WWWサーバにしたいMac にて、インストーラをダブルクリック。
- すると、「Quid Pro Quo ト」という名前のフォルダが作成される。
- フォルダ名の最後にある「ト」は、海外製ソフトを日本語MacOSで使用すると時折生じる一種の「ゴミ」である。そのままでも構わないが、何か気になるので、私はフォルダ名を「QuidProQuo」と変更している。
- 「QuidProQuo」フォルダをダブルクリックすると、中に「Quid Pro Quo」なるファイルがある。
- 「Quid Pro Quo」ファイルをダブルクリック。
- とりあえず、WWWサーバとしての機能は開始される。
- 「システムフォルダ」内の「起動項目」に、「Quid Pro Quo のエイリアス」を入れておく。これで、Mac を起動させると同時に、サーバ機能が働くようになる。
[概要]Quid Pro Quo には、「プラグイン(plug-in)」と呼ばれる追加機能を有効にするファイルがあります。プラグインは「QuidProQuo」フォルダ内の「Plug-ins」フォルダにあります。このフォルダから、ファイルを出し入れすることで、機能を有効にしたり無効にしたりできます。このWWWサーバでは、新たに1つのプラグインを導入し、3つの標準プラグインを除去します。
- 「Code Red killer」プラグインを導入
2001年夏現在、Windows マシンに感染する「Code Red」と呼ばれる一種のウィルスが流行している。このウィルスが感染したコンピュータからは、次の感染先探索のための、不正なデータ要求が送信される。この不正なデータ要求は、Windows マシンだけでは無く、Mac にも届いてくる(Mac は感染しない)。
「Quid Pro Quo」では、このデータ要求を受け取ると処理できず、サーバ機能が停止する。この問題を回避するための「Code Red killer」と呼ばれるプラグインが、フリーウェアとして公開されている。「Code Red」だけでは無く、類似のアクセスからも「Quid Pro Quo」を保護できるので、導入した方が良い。
[手順]
- 「Code Red killer」プラグインをダウンロード。
- ダウンロードしたファイルを「Stuffit Expander」で解凍すると、「CodeRedkiller-plugin」ができる。
- 「Quid Pro Quo1.0.2」フォルダにある「plug-ins」フォルダに、「CodeRedkiller-plugin」を入れる。
- 「リモート管理用プラグイン」の除去
「Quid Pro Quo」には、管理者がサーバ機以外のコンピュータからアクセスして、その管理を行えるような「リモート管理用プラグイン(Administrator-Plugin)」が標準でインストールされている。しかし、その必要性や使用頻度は、当講座のサーバに限っては、おそらく高くないだろう。いっぽう、適切な設定をしていないと、外部からの不正侵入者にサーバの管理権を奪われてしまう恐れがある。それを避けるため、このプラグインは削除しておく。
方法は「plug-ins」フォルダから、「Administrator-Plugin」を抜き出すだけである。
- 「インデックス・プラグイン」の除去
「インデックス・プラグイン」は、「SSI」と言う機能を使って、フォルダ内のファイル一覧を作成するプラグインである。「SSI」は、サーバの機能に負担となるので使用しない。よって、「インデックス・プラグイン」は不要なので、除去する。除去方法は、上記と同様。
- 「CGI プラグイン」の除去
「CGI」は、適切な設計をしていないと、サーバに多大な負担を強いたり、セキュリティ上の欠点を作る恐れがある。よって、私が管理するサーバでは、原則的に使用しない。従って、このプラグインは不要なので除去する。除去方法は、上記と同様。
結果、こんな感じになります。
[概要]「Control」メニューから「Configure Server」を選択して、以下の各項目を設定します。ここでの設定は、当方での現在の設定例です。今後の検討次第では、より適切な設定に変更するでしょう。
- [TCP/IP Setting]
- Multitasking-「Interval」「Sleep」
- サーバ機で、「Quid Pro Quo」以外のアプリケーションなどを使用している場合に、「Quid Pro Quo」の働きをどれだけ制約して、それ以外のアプリケーションを優先させるか、を設定する項目。特に初期設定から変更していない。
- Port
- サーバが、アクセスしてきたコンピュータとの間でWeb データをやりとりするための「ソフトウェア的な通路」。ふつう「80」番を指定(初期設定)。
- Max Connections
- 同時に接続できるWeb 閲覧者の数。これを大きく設定すると、サーバの反応速度が低下する。とりあえず初期設定値の「18」としておく。
- TCP Buffer Size
- 接続者にデータを送る前にスプールするデータ量。1024から8192の間に設定する。とりあえず初期設定値で問題ない。
- Timeout(時間切れ)
- 接続者からの応答が遅い場合に、接続を断ち切るまでの時間。初期設定(60秒)のままで良い。それ以上大きな数字にするのは良いが、小さい数字にすると、「すぐ接続が中断される」という状況になるので、推奨しない。
- Look up client name with DNS
- アクセス者のドメイン名を調べる項目。アクセス・ログを見るときに便利(単なるIP アドレスの数字だけではなく、企業名や大学名・プロバイダ名などが判る)。ただし、これを有効にしておくと、サーバのレスポンスが悪くなる様子。サーバの機能を重視する場合は、無効(チェックを外す)にした方が良い。
- [Windows]
- ログや活動状況を示すウィンドウの設定。初期設定のままで、とくに気にしなくて良い。
- [MIME Mappings]
- 各種ファイルの扱い方を設定する。ファイルの拡張子(suffix)、ファイルの種類(MIME Types)、処理(Action)を指定する。拡張子「.html」「.htm」のMIME Types を「text/html」、Action を「text」としておく(初期設定)。その他、「pdf」ファイルや「png」ファイルを扱う利用者がいるので、次の2項を追加する。
- 「suffix:.pdf」「MIME Types:application/x-acrobat」「Action:Binary」
- 「suffix:.png」「MIME Types:image/png」「Action:Binary」
画像以外の書類の多くは、Action を「Binary」としておくと大丈夫だろう。
- [Actions]
- 「CGI」などに関連する項目。特に設定しない。
- [Default Files]
- 「デフォルト・ファイル」とは、とくにファイル名を指定せずにフォルダにアクセスした場合に表示されるページの事。初期設定では「default.html」となっているが、このサーバでは「index.html」を指定する(したがって初期設定値から変更)。その他の項目は、とくに変更しなくて良い。
- [Log format]
- サーバにアクセスしてきたコンピュータや時刻などを記録するファイルを「ログ」と呼ぶ。この設定画面では、どのような項目を記録するかを指定できる。必ず記録を取る項目は、以下の通り。
- 日付(Date)
- 時間(Time)
- アクセスされたファイル名(URL)
- 相手先IPアドレス(Hostname)
「リンク元(Referrer)も記録した方が良い。それ以外の項目は、適当に。
- [Realms]
- 「ユーザ名」と「パスワード」によって、サイトやページにアクセス制限をかける場合に設定する。「Match Name」欄に書かれた文字列を名前に含むファイル・フォルダにアクセスしようとすると、パスワード入力を要求するようになる。安易に設定すると、他の利用者のサイトに対してもアクセス制限をかけてしまう恐れがあるので、注意すること(例えば、自分のサイトに「study.html」と言うのがあって、それにパスワードでのアクセス制限をかけるために「Match Name」に「study」と入力したら、別の人のサイトにある「study.html」にもパスワード制限がかかってしまう)。
当方のサーバでは、特に設定しない。
- [Allow/Deny]
- IPアドレスやドメイン名によって、アクセス制限をかける場合に用いる。例えば「学内者以外のアクセス禁止」などが可能である。しかし、「IPアドレスのなりすまし」などによって、不正な利用者がアクセスする事ができるので、必ずしも完璧ではない。特別な理由が無いなら、ヘタに設定しない方が良い。
- [Processor]
- 「CGI」と関連するらしい。特に設定しなくて良いだろう
- [Miscellaneous]
- 「File Cache」は、一度アクセス請求があったファイルのデータを、メモリに蓄える(cache)機能。これを有効にすると、接続者からのデータ要求に素早く応答できるが、メモリ消費量が大きくなる。ゆえに、安定性を重視する立場から、使用しない(Enable File Cacheのチェックボックス内を空欄にする)(つまり初期設定値から変更)。
[概要]サーバは24時間起動し続けていなければならないのですが、何らかの原因で、システムエラーやアプリケーションエラーを起こして、サーバとしての機能が停止する事があります。この時、管理者が近くにいる場合は手動で再起動できますが、そうで無い場合は、機能停止したままになってしまいます。そこで、自動的に復旧できるようにしておきます(以下の処置以外に、必ず「Quid Pro Quoのエイリアス」を「起動項目」に入れておくことも忘れないで下さい)。
- AutoBoot
システムエラーを起こして再起動させる必要が生じた時、一定時間の後に自動的にMacintosh を再起動させる。「AutoBoot 1.6.5」を「コントロールパネル」フォルダに、「 AutoBoot 1.6.5 extension」を「機能拡張」フォルダに入れておくと良い・・・らしい。
- Keep-It-Up
アプリケーションエラーによってサーバソフトが終了した場合、それを自動的に再起動する。「Keep-It-Up Classic」を起動させると、初期設定フォルダ内に「KIU StartUp Items」ができるので、その中に、自動再起動させたいアプリケーション(この場合Quid Pro Quo)のエイリアスを入れておく。その上で「Keep-It-Up Classic」自体のエイリアスを、「起動項目」に入れておくと良い・・・らしい。
- Okey Dokey Pro(使用法)
ダイアログなどの「OK」ボタンが出たときに、自動的にそれを押してくれる。実は、当方が管理しているサーバでは、上記2つをインストールせずに、これだけを利用して事が足りている。
というのも、当方の環境では「Quid Pro Quo」が単体で停まることはなく、必ずシステムもろとも機能が停止する。で、その時に再起動を促す「OK」ボタン付ダイアログが表示される。従って、これをインストールした上で、「Quid Pro Quo」のエイリアスを「起動項目」に入れておけば、
- 「Quid Pro Quo」停止。すぐさまシステム停止
- 「再起動ダイアログ」表示→Okey Dokey Proによって自動的再起動
- 起動項目にある「Quid Pro Quo」がスタート
と言う運びになるので、サーバの機能が保たれるのだ。上記2ソフトは有償(シェアウェア)であるのに対し、「Okey Dokey Pro」は無償なので、金銭的に助かる。
[概要]上述の例は、システムトラブルなど、管理者が意図しないサーバ停止が生じた場合の自動再起動です。しかし、管理者がサーバの安定性確保を意図して、定期的にサーバを自動再起動させるというのも、可能です。
MacOS はメモリ管理があまり芳しくなく、また「Quid Pro Quo1.0.2」にもメモリリーク(メモリ内に『ゴミ』が溜まる)があるそうです。したがって長時間サーバとして稼働させ続けていると、メモリ管理のトラブルから、Mac が異常終了・強制再起動、ということが起こります。ところで、異常終了が度重なると、初期設定ファイルやシステム関連のファイルが壊れて、厄介な事態に陥る事が予想されます。
これを防ぐためには、メモリにある「ゴミ」が溜まりすぎる前にMac を再起動させ、一旦メモリ上から『ゴミ』を消し去ると良いでしょう。そこで、当方のサーバでは、1週間に一度、あまり利用者がいない早朝にMac を自動的に再起動させるようにしています(これほど頻繁に再起動させなくても良いと思うが、とりあえず現在は、この設定にて)。
本来は、メモリの状況を把握した上で、例えば「残りメモリが○○%を下回ったら再起動」と言うのが良いのですが、これだと、再起動させる時間帯が一定しない。利用者が多い昼間に再起動されると困るので、「利用者がいない時間帯に再起動させる」という方法を選びました。
このような「自動起動」は、MacOS の標準機能で可能です。コントロールパネルの「省エネルギー設定」にて、「予約」を選択して、終了時刻と起動時刻を数分ずらして設定しておけば良いハズです。ところが、この省エネルギー設定は一部の機種(たぶんNuバス系Mac?)では機能しません。で、このサーバは、その「機能しない機種」なのです。
そうなると、フリーウェアやシェアウェアで、同じ様な事が可能なモノを探す必要があります。ですが、私が探した範囲では、フリーウェアで適切なモノが見つかりませんでした。「カネをかけない」という方針上、「Mac を再起動させる」アップルスクリプトを作成し、それをフリーウェアの「MaCrond」を使って起動させる、と言う方法をとりました。
- MaCrond
UNIX系OS の Cron 同様に、設定した時間に、任意のアプリケーションを自動的に起動させるソフト。Mac を自動再起動させるApple スクリプトを定期的に起動させるために利用している。
再起動させるApple スクリプトの作成は、以下の手順である。
- MacOS 標準添付の「スクリプト編集プログラム」をダブルクリックにて起動
tell application "Quid Pro Quo" to quit
tell application "Finder" to restart
の2文を書く。- 「ファイル」メニューから「実行専用で保存」を選択
- 「名前」は判りやすいものを適切に付ける。
- 「フォーマット」は「classicアプリケーション」
- 「実行後、自動的に終了しない」はチェックしない(初期設定のまま)
- 「初期画面を表示しない」はチェックを入れる(初期設定のまま)
- 「保存」ボタンをクリック
「Quid Pro Quo」を終わらせ、その後Mac を再起動させる、というスクリプトである。
一応Mac のために弁明しておくと、MacOS は、決して不安定なOS では無い。不要な機能拡張を取り除いたり、アプリケーションなどに割り当てるメモリを適切に増やしたりすることで、かなり安定する(例えば、サーバ機では、文章入力など行わないと考えて、「ことえり」のような漢字かな変換ソフトも、はずしておく)。また、稼働させるアプリケーションを限定すれば、さらに安定度が増す。したがって、サーバ専用として特化させてしまえば、そのMac はかなり安定するはずである(参考にもならないが、うちのサーバの機能拡張一覧)
Mac のアプリケーションは、「メモリ割り当てを増やす」という作業をしてやると、安定的に稼働する傾向にあります。そこで、「Quid Pro Quo」のメモリ割り当てを増やしておきます。画面の様子は、MacOS のバージョンによって多少違いますが、「アプリケーションの情報を見る」「メモリを見る」「割り当て数字を増やす」という作業事態は、共通しています。具体的な作業は「Macintosh News」にある「アプリケーションメモリ割り当ての変更」を参照して下さい。
また、「Finder」の割り当てメモリを増やすことで、Mac 自体の安定性を高めることが出来ますが、そのためには「ResEdit」というソフトが必要です。作業方法は、上述のサイトにある「 Finder メモリ割り当ての変更」を参照下さい。
[概要]サーバへの「ファイルのアップロード」は、「AppleTalk」によるネットワークを介して行います。以下は、サーバ機における設定の手順。
[手順]
- 1. ネットワーク関連の設定を確かめる(「アップルメニュー」→「コントロールパネル」)
当サーバの場合、「AppleTalk」は「Ethernet」、「共有設定」は「ファイル共有」を有効にしておく(画面はMacOS7.6.1 でのもの。違うOS であれば、異なる名称になっている場合があるが、類推で何とかなるでしょう。
- 2. サーバ機へアクセスするための「ユーザ設定」を行う
- 「コントロールパネル」の「利用者&グループ」をダブルクリックする
- 「Command+N」にて、「新規利用者」を作成
- その「新規利用者」アイコンをダブルクリック
- パスワードを設定し、「新規利用者」と言う名前も、別名に改変
- 「ゲスト」アイコンもダブルクリックして、アクセスを許可する設定になっていない事を確認
- もし「ゲスト」のアクセスにチェック印が入っている(許可になっている)場合は、すみやかにチェック印をクリックして消せ;命令
- 3. Webデータのあるフォルダを「共有」させる
Webデータのあるフォルダを選択し、ファイルメニューの「共有」を選択。すると設定用のウィンドウが開かれる。「所有者」と「全利用者」にはチェック印を付けない。「利用者/グループ」には、先ほど作成した利用者名を選択して、チェック印を入れておく(このような感じになればよい)(この例は「try」」フォルダを共有させる場合)
注意しなければならないのは、以下の点。
- 「利用者名」とパスワードは、かならず他者に簡単に連想されない物にしておくこと
かなり当然
- 「ゲスト」のアクセスは許可しないこと
「ゲスト」はパスワード不要でアクセスできてしまうので、必ずアクセス禁止
- 「所有者」モードでの利用は控えること
「所有者」モードで接続した場合、ハードディスク全体にアクセスできるので、操作ミスでシステムをブッ壊してしまう恐れがあるから、辞めること。共有されたフォルダへの接続は、この手順にて作成した「利用者」モードにて行うこと。
今後の課題点は、次の通り。
- 共有できる項目に上限がある
MacOS の仕様なので、どうもすることもできない様子。各個人用のWebデータフォルダを個々に共有させるのではなく、それらをひとまとめにして別のフォルダに入れて、そのまとめたフォルダを共有させる事で対応可能
その場合、現在のフォルダの構成が変わるので、リンクなどの設定を変更する必要がある
- Windows ユーザがアクセスできない
MacOS の共有機能を使っているので、Windows ユーザがWebデータを作成しても、アップロードできない。対処としては、別のMac にメール添付などでデータを送り、そのMac 経由にてアップロードするなどの方法がある。
「考慮したが見送った対処法」には、Windows とMac とでネットワークの「相互乗り入れ」を可能にする市販ソフト(PC MacLAN や、DAVE など)を導入する事や、サーバ機にFTP 機能を持たせる事がある。前者は「カネをかけない」という方針から見送った。後者もまた、Mac 用のFTPサーバソフトが有償の物が中心であり、無償FTPサーバソフトとして使用可能な「NCSA Telnet」で適切なユーザ設定ができなかった事などから諦めた。
ログ・ファイルには、「Step D」の「Log format」にて決めた項目が記録されています。定期的に閲覧して置くことを勧めます。ログは、各項目がタブ区切りのテキストデータになっています。
検索サイト経由での訪問者の場合、リンク元情報の中に、「どんなキーワードで検索してヒットしたのか?」が記録されています。日本語の表記は、複数の「文字コード」が混在しています(検索サイトやOS に依存する様子)。
日本語を表記するための文字コードには、「シフトJIS」という一般的にパソコンで使われる文字コード以外にも、「EUC-JP」や「ユニコード」などがあります。これらの文字コードは、普通パソコンでは文字化けして正常に表記されません。ですから、ログの中にも、文字化けした部分がかなりあるハズです。しかし、文字コード変換を行って、「シフトJIS」に変えれば、それらも読むことが可能です。
[文字コード変換の手順vol.1]
ネット上には、フリーウェアとして、いくつかの「文字コード変換ソフト」が公開されている。検索エンジンなどにて「Mac+文字コード+変換」などの言葉にて複合サーチすると見つかる(文字コード変換ソフトとして、「Mac nkf」と「和尚様の老眼鏡」をリンクしておく)。これらのソフトを利用して、「シフトJIS」文字コードに変換する。
[文字コード変換の手順vol.2]
私が試した限り、上記[vol.1]の方法は、ある程度の知識が必要だと感じた。以下に挙げる方法は、手間がかかるものの、もっとも知識が無くても可能な「文字コード」変換手順だと思う。
- ログファイルを、自分が普段つかっているMac にコピーする
絶対にサーバ上にあるログファイルを、直接見ようとしてはならない(サーバ機に負担がかかりすぎる)。以下の作業は、この「サーバ機以外のMac にコピーしたログファイル」を利用して行う。
- 「Excel」に取り込む
タブ区切りのテキストデータなので、「Excel」のような表計算ソフトに読み込ませると、各項目が見やすくなる。で、その中から、文字化けを含むセルを選択して、コピー。(文字化けのない日本語表記は、「シフトJIS」なので、変換する必要がない)。
- テキストエディタの「新規ファイル」にペーストして保存
ペーストした画面は「YooEdit」を用いた例。複数文字コードが扱えるエディタなら他の物(「mi」や「Jedit」など)でも可能かと思われる。保存の際には、「文字コード」欄を「Macitosh(SJIS)」としておく(「SJIS」は「シフトJIS」の意)。で、保存後にファイルを閉じる。ファイル名は、適当で良い。
- 先ほど保存したファイルを開く
画面は「YooEdit」を用いた例。開いてみると、先刻まで文字化けしていた部分が読めるようになっている。で、これをコピーして、「Excel」で開いたログの、該当するセルにペーストする。
- ログファイルを「Excel」シートとして加工
「Excel」上にて、各セルを並べ替えたりすれば、「リンク元チェック」や、アクセスの多い時間帯を知るなどの「アクセス解析」作業が可能となる。
「手間が掛かる」という点は除いて(^^;)、問題点は以下の2点。
複数の文字コードを同時に扱うことはできない。例えば、「シフトJIS」と「EUC-JP」が混じった状態(図中の楕円内に注意)で、上記手順と同じ事をしても、文字化けは解消されない。面倒だが、文字コードごとに別個に行うこと。
また、「YooEdit」ではユニコードに由来する(らしい)文字化けは解消されなかった。まあ、件数が少なければ、あまり気にする程でも無いと思う。