Pegasus のインストール
目次- 1.0.0 インストール
- 2.0.0 コンパイル時のトラブル
- 3.0.0
/usr/web
の作成 - 4.0.0 コンテンツの置き場所
- 5.0.0
/sys/lib/httpd.rewrite
- 6.0.0
/lib/namespace.httpd
- 7.0.0 最初は
listen
の管理下で実行 - 8.0.0 動作確認をする。
- 9.0.0 アクセス制御とセキュリティ
- 10.0.0 おわりに
2003/01/11 改訂
以下に CGI を使用しない場合のインストールの方法を解説する。
インストール
pegasus-2.0b.tgz
をとってくる
- 解凍する
term% gunzip pegasus-2.0b.tgz
term% tar -xf pegasus-2.0b.tar
すると tar を実行したディレクトリに、ディレクトリ
pegasus
が作成される。以下の説明ではこのディレクトリのパスを
$pegasus
とする。
- コンパイルする
term% cd pegasus
term% cd httpd
term% mk lib
term% mk
- インストールする
標準的なインストール先は
/usr/local/bin/386
なので無ければ作成する。(あるいは他のディレクトリにインストールしても構わない)
term% mk install
コンパイル時のトラブル
「estrdup
がない」と文句を言われるかもしれません。その場合、emem.c
に含まれている estrdup
を生かしてください。estrdup
は最新の環境ではライブラリに含まれています。
/usr/web
の作成
/usr/web
を作成する。term% mkdir /usr/webディレクトリのオーナーを
web
にしてはならない。others
に対して読みとりと実行を許しておく。サーバモードで実行しない限り、/adm/users
に web
を登録する必要はない。ベースディレクトリ /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 サーバの情報は全て公開される事を覚悟すべきでしょう。(管理の手落ちによって秘密の情報をオープンにしてしまう事は珍しくはない。)