Logo address

httpd

目次

配置

	/usr/local/bin/386/httpd

用法

	httpd [-Mfmsuw] [-t timeout] [-p port] [-c certificate] [-n namespace] [-R rewrite] [[httpd] dummy ..  incalldir]

オプション

-m
マウントを許可する。
-s
サーバモードで実行する。詳しくはサーバモードを見て下さい。
このオプションを付けない場合には listen によって呼び出される。
-u
{httpd} を起動したユーザIDでサービスを行う。
このオプションはサーバモードでのみ有効です。
詳しくはサーバモードを見て下さい。
-w
{$home/web/doc} 以下のディレクトリを自動的にユーザドキュメントとして公開することを行わない。
-M
{mon} と共に使用する。
このオプションはサーバモードでのみ有効です。
詳しくはサーバモードを見て下さい。
-t timeout
CGI プログラムに対するタイムアウト。
バグを持った CGI プログラムに対するガードです。
暗黙の指定: 5 秒
-p port
サービスポート。
暗黙の指定: 80
-c certificate
PEM 形式の証明書を与えます。https を使用する場合に必要です。
-n namespace
名前空間編成ファイル
暗黙の指定: {/lib/namespace.httpd}
-R rewrite
URI 変換ファイル
暗黙の指定: {/sys/lib/httpd.rewrite}
残りの引数は listen によって呼び出しを受ける時に、listen が与えます。直接指定する必要はありません。

説明

実行の方法

Pegasus はいろいろな方法で実行させることができます。以下に手軽な順に説明します。
  1. listen の下で実行
    listen の下で実行する場合には
    /rc/bin/service/tcp80
    を作成し、実行フラグを立てて以下の内容を書いておきます。
    #!/bin/rc
    exec /usr/local/bin/$cputype/httpd $*
    この場合にはユーザ none として実行されます。
  2. サーバモードで、ユーザ none で実行
    この場合には
    /usr/local/bin/386/httpd -s
    /bin/rc/cpurc の中に書いておきます。
  3. mon の下で実行
    サーバモードで、ユーザ web で実行することによって、サーバのシステムユーザから読みとれないファイルを CGI を使用して作成できます。その場合には mon を使用します。詳しくはmonを見てください。
さらに、上記の実行方法に SSL(TLS) を組み合わせることもできます。詳しくは証明書(Certificate) を見てください。

サービス空間

httpd がサービスを行っているときに、httpd が見るファイルの集合です。「コンセプト」で説明したように、Pegasus の場合にはこの空間は、web ベース /usr/web を基に、/lib/namespace.httpd で編成された名前空間に、/sys/lib/httpd.rewrite で指定された web ルートがマージされることによって形成されます。

web ルート

Pegasus の web ルートは、実ホスト、仮想ホスト、ユーザごとに異なります。実ホストと仮想ホストの web ルートは /sys/lib/httpd.rewrite で指定されます。ユーザ(例えば alice )の web ルートは /usr/alice/web です。
以下では web ルートを $web で表します。

ドキュメントルート

実ホスト、仮想ホスト、ユーザごとにドキュメントルートが存在します。それらは実空間では $web/doc であり、サービス空間では /doc となります。

ドキュメント空間

ドキュメントルートの下にあるファイルの集合です。Pegasus にアクセスするクライアントはドキュメント空間の中のピリオドで始まらないファイルにのみアクセスできます。サービス空間の中の他のファイルは CGI を通じてのみアクセスできます。

関連ファイル

	/lib/namespace.httpd
	/sys/lib/httpd.conf
	/sys/lib/mimetype
	/sys/lib/httpd.rewrite
	/sys/log/http
	/sys/log/blacklist
	/rc/bin/service/tcp80
	/lib/namespace
	/lib/ndb/local
	$web/etc
	$web/namespace_80
	$web/bin/386
	$web/bin/rc