From: Yoshiki Hayashi Date: Sat, 4 Sep 2004 20:51:46 +0000 (+0000) Subject: Backport Japanese translation from 2.1. X-Git-Tag: 2.0.52~104 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=644507660f2946db86f51d1e68f08f5f00897004;p=thirdparty%2Fapache%2Fhttpd.git Backport Japanese translation from 2.1. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/APACHE_2_0_BRANCH@104960 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/docs/manual/developer/modules.xml.ja b/docs/manual/developer/modules.xml.ja index 95c7dad86a6..60b1d90e7c9 100644 --- a/docs/manual/developer/modules.xml.ja +++ b/docs/manual/developer/modules.xml.ja @@ -1,7 +1,7 @@ - + + + + How-To / チュートリアル Apache Tutorial: CGI による動的コンテンツ @@ -29,15 +30,12 @@ mod_alias - mod_cgi AddHandler - Options - ScriptAlias @@ -72,27 +70,31 @@

ScriptAlias ディレクティブは以下のように使用します:

- ScriptAlias /cgi-bin/ /usr/local/apache/cgi-bin/ + + ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/ +

デフォルト位置に Apache をインストールしたならば、 この例はデフォルト状態の httpd.conf - 設定ファイルに含まれています。ScriptAlias + 設定ファイルに含まれています。 + ScriptAlias ディレクティブは、URL の前に付加するディレクトリを定義する - Alias ディレクティブとかなり似ています。 - AliasScriptAlias は通常、 - DocumentRoot + Alias + ディレクティブとかなり似ています。 + AliasScriptAlias + は通常、DocumentRoot ディレクトリ外のディレクトリのために使用されます。 - AliasScriptAlias との差は、 - ScriptAlias が接頭辞で始まるすべての URL は - CGI プログラムとみなされるという追加の意味を含んでいることです。 + AliasScriptAlias + との差は、ScriptAlias が接頭辞で始まるすべての + URL は CGI プログラムとみなされるという追加の意味を含んでいることです。 従って、上記の例では、/cgi-bin/ で始まるリソースへのあらゆるリクエストに対して、ディレクトリ - /usr/local/apache/cgi-bin/ から提供し、それらを + /usr/local/apache2/cgi-bin/ から提供し、それらを CGI プログラムとして扱うよう Apache に示します。

例えば、URL http://dev.rcbowen.com/cgi-bin/test.pl が要求された場合、Apache は ファイル - /usr/local/apache/cgi-bin/test.pl + /usr/local/apache2/cgi-bin/test.pl を実行し、その出力を返すことを試みます。 もちろん、ファイルが存在し、実行可能であり、決められた方法で出力を返します。 そうでなければ、Apache はエラーメッセージを返します。

@@ -101,66 +103,91 @@
ScriptAlias ディレクトリ外の CGI -

CGI プログラムは、セキュリティ上の理由から ScriptAlias +

CGI プログラムは、セキュリティ上の理由から + ScriptAlias されたディレクトリに制限されることがしばしばあります。この方法により、 CGI プログラムを使用できるユーザを管理者が厳しく制御することができます。 しかしながら、適切なセキュリティ事前対策がとられるならば、CGI プログラムを任意のディレクトリで実行できないようにする理由はありません。 - 例えば、ユーザに UserDir ディレクティブで - 彼らのホームディレクトリ配下にウェブコンテンツを持たせたいとします。 + 例えば、ユーザに UserDir + ディレクティブで彼らのホームディレクトリ配下にウェブコンテンツを持たせたいとします。 もし、彼らが CGI プログラムを持つことを望んでいても、メインの cgi-bin ディレクトリへのアクセスができない場合、 CGI プログラムを実行することができる他の場所が必要になります。

+ +

任意のディレクトリで CGI の実行を許可するには二段階の設定が必要です。 + まず、AddHandlerSetHandler ディレクティブによって + cgi-script ハンドラが可能になっている必要があります。 + 次に、Options ディレクティブで + ExecCGI が指定されていなければなりません。

CGI の実行を可能にするために Options を明示的に使用する -

サーバのメインの設定ファイル中で Options +

サーバのメインの設定ファイル中で Options ディレクティブを明示的に使用することで、特定のディレクトリ配下で CGI の実行を許可するように指定することができます:

- <Directory /usr/local/apache/htdocs/somedir>
- Options +ExecCGI
- </Directory>
+ + <Directory /usr/local/apache2/htdocs/somedir>
+ + Options +ExecCGI
+
+ </Directory> +

上記ディレクティブは、CGI ファイルの実行を可能にするよう Apache に伝えます。また、どのファイルが CGI ファイルかを - サーバに伝える必要があります。次の AddHandler + サーバに伝える必要があります。次の + AddHandler ディレクティブの例では、cgi または pl を拡張子に持つすべてのファイルを CGI プログラムとしてみなすことをサーバに伝えます:

- AddHandler cgi-script cgi pl + + AddHandler cgi-script .cgi .pl +
.htaccess files -

.htaccess - ファイルは、ディレクトリ毎にディレクティブを指定する方法です。 - Apache は、リソースを提供するときに、 - 提供するファイルが置かれているディレクトリ中の .htaccess - というファイルを参照します。そのファイルを発見したら、 - その中で発見されたディレクティブが適用されます。 - .htaccess ファイルは、AllowOverride - ディレクティブの指定により使えるようになります。 - AllowOverride ディレクティブは、.htaccess - ファイルで設定できるディレクティブのタイプを指定します。 - AllowOverride ディレクティブの指定がない場合、 - まったく使えません。CGI の実行を許可するために必要となる - ディレクティブを指定可能にするには、 - 以下の設定がサーバのメインの設定で必要になります:

- - AllowOverride Options - -

.htaccess - ファイルでは、次のディレクティブが必要となります:

- - Options +ExecCGI - -

この設定では、このディレクトリにおける CGI - プログラムの実行を許可するよう Apache に伝えます。

+

.htaccess チュートリアル + は httpd.conf を変更できない場合にどうやって CGI プログラムを + 使えるようにするかを説明しています。

+
+ +
+ User ディレクトリ + +

.cgi で終わるすべてのファイルに対して CGI プログラムの + 実行を許可するには、以下の設定を使用できます。

+ + + <Directory /home/*/public_html>
+ + Options +ExecCGI
+ AddHandler cgi-script .cgi
+
+ </Directory> +
+ +

ユーザディレクトリの cgi-bin サブディレクトリの + すべてのファイルを CGI プログラムとして指定したい場合には + 以下のようなものを使います。

+ + + <Directory /home/*/public_html/cgi-bin>
+ + Options ExecCGI
+ SetHandler cgi-script
+
+ </Directory> +
+
@@ -175,7 +202,9 @@ これはどのような種類のコンテンツを受け取っているかをクライアントに示す HTTP ヘッダです。ほとんどの場合では、次のように出力します:

- Content-type: text/html + + Content-type: text/html +

もう一つは、出力を HTML か、ブラウザが表示することができる何か他の形式にする必要があります。 @@ -193,9 +222,10 @@ というファイルに保存し、それを cgi-bin ディレクトリに置いてください。

- #!/usr/bin/perl
- print "Content-type: text/html\n\n";
- print "Hello, World."; + + #!/usr/bin/perl
+ print "Content-type: text/html\n\n";
+ print "Hello, World.";

Perl に精通していなくても、 @@ -206,12 +236,14 @@ 示します。2 行目は、前述したとおり content-type の定義を印字します。 これには復帰改行の二つの組を後に付加します。 これにより、ヘッダの終りに空行が置かれ、HTTP - ヘッダの終りとボディの始まりを示します。3 行目は、``Hello, World.'' + ヘッダの終りとボディの始まりを示します。3 行目は、"Hello, World." という文字列を印字し、これで終りとなります。

好みのブラウザを開き、アドレス

- http://www.example.com/cgi-bin/first.pl + + http://www.example.com/cgi-bin/first.pl +

あるいはファイルを置いたロケーションを指定すると、 Hello, World. @@ -230,13 +262,13 @@

CGI プログラムの出力
-
素晴らしい ! それはすべてがうまく動いたことを意味します。 -
+ 出力が正常だけれども、ブラウザが正常に処理してくれない場合は、 + 正しい Content-Type を CGI プログラム内で + セットしたかを確認してください。
CGI プログラムのソースコード、または "POST Method Not Allowed" というメッセージ
-
これは、CGI プログラムを処理できるよう Apache を適切に設定していなかったことを意味します。「CGI を許可するように @@ -245,7 +277,6 @@
メッセージが "Forbidden" で始まっている
-
これはパーミッションの問題ということを意味します。 Apache のエラーログと、後述の「ファイルのパーミッション」 @@ -253,7 +284,6 @@
"Internal Server Error" というメッセージ
-
Apache のエラーログをチェックすると、"Premature end of script headers" というログが記録されていると思います。そして、おそらく CGI @@ -267,40 +297,34 @@ ファイルのパーミッション

サーバはあなたの権限で実行されていないのを忘れないように。 - つまり、起動するとき、サーバは特権をもたないユーザ - 通常 ``nobody'' - や ``www'' の権限で実行されます。したがって、あなたが所有する + つまり、起動するとき、サーバは特権をもたないユーザ - 通常 nobody + や www の権限で実行されます。したがって、あなたが所有する ファイルを実行するには別のパーミッションが必要となります。 - 通常、``nobody'' が実行するのに十分なパーミッションを与える方法は、 + 通常、nobody が実行するのに十分なパーミッションを与える方法は、 ファイルに誰でも実行可能とするパーミッションを与えることです:

- chmod a+x first.pl + + chmod a+x first.pl +

また、もしあなたのプログラムが他のファイルを読み書きするならば、 それらのファイルは、これが可能となる正しいパーミッション を持っている必要があります。

-

これに対する例外は、サーバが suexec - を使用するよう設定されている場合です。suexec は、CGI - プログラムが置かれているバーチャルホストまたはユーザの - ホームディレクトリによって、異なるユーザ権限で実行されるようにします。 - suexec はとても厳しいパーミッションのチェックがあり、 - そのチェックを通過できないと "Internal Server Error" となり、その - CGI プログラムの実行は失敗します。 - この場合、どのセキュリティチェックが失敗しているのかを知るために - suexec ログファイルをチェックする必要があります。

- パス情報 + パス情報と環境

コマンドラインからプログラムを実行するとき、 意識しなくてもシェルに渡される情報があります。 例えば、参照するファイルのためにどこを検索したらよいかを - シェルに伝えるパスがあります。

+ シェルに伝える PATH があります。

プログラムが CGI プログラムとしてウェブサーバによって実行されるとき、 - それはパスを持ちません。CGI プログラム内で呼び出すあらゆるプログラム - (例えば、'sendmail' のようなもの) は、 + それは同じ PATH ではないかもしれません。 + CGI プログラム内で呼び出すあらゆるプログラム + (例えば、sendmail のようなもの) は、 フルパスで指定する必要があるでしょう。それにより、CGI プログラムを実行しようとしたとき、 シェルはそのようなプログラムを見つけることができます。

@@ -308,20 +332,38 @@

同様なことは、スクリプトのインタプリタ (しばしば perl) へのパスで、CGI プログラムの 1 行目に次のように示されます:

- #!/usr/bin/perl + + #!/usr/bin/perl +

これがインタープリタへの実際のパスであることを確実にしておきます。

- 構文エラー + プログラムエラー

CGI プログラムが失敗するのは大抵、プログラム自身に問題がある場合です。 一度 CGI の使い方を理解し、前述の二つの誤りを犯していないならば、 - まず間違いなくそうでしょう。ブラウザを通してテストを行う前に必ず、 - コマンドラインからプログラムの実行を試しなさい。 - これにより、大抵の問題が起こらなくなります。

+ まず間違いなくそうでしょう。ブラウザを使ってテストする前に + まず確認することは、コマンドラインからプログラムが実行できることです。 + 例えば、以下を実行してみてください:

+ + + cd /usr/local/apache2/cgi-bin
+ ./first.pl +
+ +

(perl インタプリタは呼ばないでください。 + シェルと Apache がスクリプトの最初の行の パス情報 を使って見つけます。)

+ +

最初にプログラムから出力されるのは Content-Type を含み、 + 後に空行の続く HTTP ヘッダでなければなりません。他のものが出力されている + 場合は、Apache はこのプログラムをサーバ経由で実行しようとしたときには + Premature end of script headers エラーを出力します。詳細は + 上記の CGI プログラムを書く を読んでください。

@@ -335,16 +377,40 @@ エラーログの読み方を学ぶことで、ほとんど全ての問題が迅速に確認され、 迅速に解決されるということが分かるでしょう。

+ +
+ Suexec + +

suexec サポートプログラムは + バーチャルホストやユーザのホームディレクトリの場所に依って + CGI プログラムを違うユーザ権限の下で走らせることを可能にします。 + Suexec の権限のチェックは非常に厳しく、それを満たさない場合は + CGI プログラムが Premature end of script headers エラーで + 実行されません。

+ +

suexec を使っているかどうかを調べためには apachectl + -V を実行して、SUEXEC_BIN の場所を調べてください。 + Apache がそこに suexec のバイナリを発見した場合は、suexec が + 使用されます。

+ +

suexec を完全に理解していない限り、使うべきではありません。 + suexec を無効にするには、SUEXEC_BIN から指されている + suexec バイナリを削除 (か名前を変更) するだけです。 + suexec を読んだ後で、まだそれを + 使いたいのであれば、suexec -V を実行して suexec の + ログファイルの位置を調べ、そのログファイルを使ってポリシー違反を + 見つけてください。

+
裏で何が起こっているのか? -

CGI プログラミングに熟達すると、 - 裏で起こっていることについて更に理解することは有益になるでしょう。 +

CGI プログラミングに習熟すると、 + 裏で起こっていることについて更に理解すること役に立ちます。 ブラウザとサーバがどのように相互通信するかについては特にそうです。 - なぜなら、``Hello, World.'' - を印字するプログラムを書くことはまことに結構ですが、 + なぜなら、"Hello, World." + を印字するプログラムを書くことはおおいに結構ですが、 それは特に有益ではありません。

@@ -355,16 +421,16 @@ それらは、パス (コマンドをタイプしたときに実行する実際のファイルを探し出すところ)、 ユーザ名、端末型などのような便利なものです。 - 通常の、毎日の環境変数の完全なリストを調べるには、コマンドプロンプトで - env を入力します。

+ 通常、普段使用している環境変数の完全なリストを調べるには、 + コマンドプロンプトで env を入力します。

CGI の処理中、サーバとブラウザも環境変数を設定し、 それにより相互に通信することができるようになります。 その環境変数は、ブラウザタイプ (Netscape, IE, Lynx)、サーバタイプ (Apache, IIS, WebSite)、実行されている CGI - プログラムの名前などのようなものです。

+ プログラムの名前などです。

-

これらの変数は CGI プログラマが使用することができます。 +

これらの変数は CGI プログラマが使用できます。 そして、それはクライアントとサーバの通信の話の半分です。 必要な変数の完全なリストは - #!/usr/bin/perl
- print "Content-type: text/html\n\n";
- foreach $key (keys %ENV) {
- print "$key --> $ENV{$key}<br>";
- }
+ #!/usr/bin/perl
+ print "Content-type: text/html\n\n";
+ foreach $key (keys %ENV) {
+ + print "$key --> $ENV{$key}<br>";
+
+ } +

@@ -411,7 +480,7 @@

- name=Rich%20Bowen&city=Lexington&state=KY&sidekick=Squirrel%20Monkey + name=Rich%20Bowen&city=Lexington&state=KY&sidekick=Squirrel%20Monkey

時々、このような文字列が URL @@ -437,22 +506,23 @@

Perl で CGI プログラムを書いているなら、モジュールは CPAN で提供されています。 - この目的のための最も普及しているモジュールは CGI.pm です。 - CGI::Lite も検討しましょう。これは、ほとんどのプログラム + この目的のための最も普及しているモジュールは CGI.pm です。 + CGI::Lite も検討しましょう。これは、ほとんどのプログラム において必要とするすべての機能の最小セットの実装です。

C で CGI プログラムを書いているなら、いろいろな オプションがあります。これらの内の一つは http://www.boutell.com/cgic/ - で提供されている CGIC ライブラリです。

+ で提供されている CGIC ライブラリです。

更なる情報

CGI に関する情報はウェブで数多く提供されています。CGI - の問題については Usenet の comp.infosystems.www.authoring.cgi - で、他のユーザと論議することができます。HTML Writers Guide の + の問題については Usenet の comp.infosystems.www.authoring.cgi で、 + 他のユーザと論議することができます。HTML Writers Guide の -servers メーリングリストは、あなたの質問に回答してくれる偉大なリソースです。 http://www.hwg.org/lists/hwg-servers/ diff --git a/docs/manual/howto/htaccess.xml.ja b/docs/manual/howto/htaccess.xml.ja index 620aad19f55..366f278fcf4 100644 --- a/docs/manual/howto/htaccess.xml.ja +++ b/docs/manual/howto/htaccess.xml.ja @@ -1,7 +1,7 @@ - + + + + +How-To / チュートリアル Apache チュートリアル: Server Side Includes 入門 @@ -379,7 +380,7 @@

このように単純に文字どおりに設定することに加え、 - 例えば環境変数や前の記事で述べた変数 + 環境変数や上記の変数 (例えば LAST_MODIFIED のような) を含む他のあらゆる変数を値を設定するのに使用することができます。 変数名の前にドル記号 ($) を使用することで、