Logo address

Pegasus のインストール

目次

2003/01/11 改訂
以下に CGI を使用しない場合のインストールの方法を解説する。

インストール

  1. pegasus-2.0b.tgz をとってくる
  2. 解凍する
    term% gunzip pegasus-2.0b.tgz
    term% tar -xf pegasus-2.0b.tar
    すると tar を実行したディレクトリに、ディレクトリ
    pegasus
    が作成される。以下の説明ではこのディレクトリのパスを
    $pegasus
    とする。
  3. コンパイルする
    term% cd pegasus
    term% cd httpd
    term% mk lib
    term% mk
  4. インストールする
    標準的なインストール先は
    /usr/local/bin/386
    なので無ければ作成する。(あるいは他のディレクトリにインストールしても構わない)
    term% mk install

コンパイル時のトラブル

estrdup がない」と文句を言われるかもしれません。その場合、emem.c に含まれている estrdup を生かしてください。estrdup は最新の環境ではライブラリに含まれています。

/usr/web の作成

/usr/web を作成する。
	term% mkdir /usr/web
ディレクトリのオーナーを web にしてはならない。others に対して読みとりと実行を許しておく。サーバモードで実行しない限り、/adm/usersweb を登録する必要はない。ベースディレクトリ /usr/web は名前空間編成の基礎になるディレクトリである。ここに配布ファイルの $pegasus/example/usr/web をコピーする。筆者の cpdir を使用するのが簡便である。cpdir は http://plan9.aichi-u.ac.jp/netlib/cmd/cpdir に置かれている。
	term% cpdir -mv $pegasus/example/usr/web /usr/web
作成されたこれらのディレクトリのオーナーも web にしてはならない。others に対して読みとりと実行を許しておく。example/usr/web は CGI が使用できる内容になっている。従って、CGI を使用しない場合には多くの不要のものが含まれている。特に害はないと思えるので、そのまま使用しても構わない。
コンテンツは
	/usr/web/doc
の下には書かない。このディレクトリは単にコンテンツを盛りつけるベースのような役割を果たしている。

コンテンツの置き場所

実ホストのコンテンツはあなたのホームディレクトリの下に置く。あなたが bob だとすれば
	/usr/bob/www/doc
が推奨される置き場所である。
ユーザのコンテンツは、 $home をそのユーザのホームディレクトリとすれば
	$home/web/doc
に置く。この場合このユーザ(alice とせよ)のコンテンツへのクライアントからのアクセスは
	http://your.host.com/~alice
のようになるであろう。こここに your.host.com はあなたのサーバのドメイン名である。

/sys/lib/httpd.rewrite

実ホストのコンテンツが /usr/bob/www/doc に置かれていれば
/	*/usr/bob/www
の一行だけを書く。これでユーザのホームページの分を含めてサポートされている。最初のうちはこれで十分である。

/lib/namespace.httpd

配布ファイルの $pegasus/sample/lib/namespace.httpd をそのまま使用しても構わない。このファイルは CGI を使用する内容になっている。しかし特に害はないと思える。

最初は listen の管理下で実行

いきなりサーバモードなどと言う高級な事はしないで、listen の管理下で httpd を実行しよう。通常はそれで充分である。
	/rc/bin/service/tcp80
を作成する。その内容は
	#!/bin/rc
	exec /usr/local/bin/$cputype/httpd $*
である。アクセスモードを
	--rwxrwxr-x
に設定する。

動作確認をする。

あなたが bob と仮定する。その場合
	/usr/bob/www/doc/index.html
を作成し、適当な内容を書く。
他のコンピュータからブラウザを使ってアクセスしてみる。

アクセス制御とセキュリティ

Pegasus は、他のサーバと同様に、ドキュメントルートの外のファイルをクライアントから要求された場合には拒否します。さらに Pegasus はピリオドで始まるファイルを要求された場合にも拒否します。これらは CGI を通じてのみアクセス可能です。

以上の一般的な規則の他に、パスワードによってアクセスできるディレクトリや特定の IP のクライアントのみ拒否あるいは受け入れるディレクトリを定義できます。

	/usr/bob/www/etc
bob のドキュメントに対するアクセス制御ファイルの置き場所です。(ドキュメントの制御はドキュメントの所有者の責任において行う。これが Pegasus の思想です。)
詳しくはアクセス制御を参照して下さい。

殆どのソフトウェアにバグがあるように、Pegasus にもバグが残っているかも知れません。(発見したら報告をお願いします)
多数のユーザを抱えた場合には、ユーザが知っている情報は漏れていく可能性があります。それがシステムのセキュリティを支えているような重要な情報であってもです。従ってそのような場合には認証サーバを別に持つべきです。CPU サーバの情報は全て公開される事を覚悟すべきでしょう。(管理の手落ちによって秘密の情報をオープンにしてしまう事は珍しくはない。)

おわりに

Pegasus は様々な事に柔軟に対応できるように作られています。CGI に対しても木目の細かい制御が可能です。そのためにいきなり高度な事を行うと、訳が分からなくなるかも知れません。まずは簡単な所( CGI を使用しないドキュメント)から始めましょう。