From 9f99daadf6248ff41ee12228adccba49b699f56f Mon Sep 17 00:00:00 2001
From: =?utf8?q?Andr=C3=A9=20Malo?=
Apache が使用するアドレスとポートの設定をします。
@@ -57,7 +55,7 @@ すべてのインターフェースの与えられたポート番号を listen します。 IP アドレスがポート番号と同時に与えられた場合は、 サーバは与えられたポートとインターフェースを listen します。 - 複数の Listen ディレクティブを用いて + 複数のListen
ディレクティブを用いて
いくつかの listen するアドレスとポートを指定できます。
サーバはリストされたアドレスやポートからのすべてのリクエストに
対して応答します。
@@ -108,7 +106,8 @@
の両方を扱うには、マップトアドレスを使用する以外の方法はありません。
IPv4 と IPv6 のコネクションを最小限のソケットで扱いたいのであれば、
IPv4 マップの IPv6 アドレスを使用する必要があり、
- --enable-v4-mapped
configure オプションを指定します。
+ --enable-v4-mapped
configure
+ オプションを指定します。
--enable-v4-mapped
は、
FreeBSD, NetBSD, OpenBSD 以外の全てのプラットホームでのデフォルトです。
@@ -117,7 +116,7 @@
プラットフォームや APR が何をサポートするかに関わらず、
IPv4 コネクションのみを扱うようにしたい場合は、
次の例のように全ての
- Listen
ディレクティブで
+ Listen
ディレクティブで
IPv4 アドレスを指定してください。
条件を満たすプラットホームで、Apache が
IPv4 と IPv6 のコネクションを個別のソケットで扱うようにしたい場合
(つまり IPv4 マップのアドレスを無効にしたい場合)
- は、 Listen でバーチャルホストが実装されるわけではありません。
+
@@ -128,7 +127,8 @@
--disable-v4-mapped
configure
+ は、--disable-v4-mapped
+ configure
オプションを指定して、次のように個別指定の
Listen
ディレクティブを使用してください。
@@ -139,7 +139,8 @@
バーチャルホストに対してどう働くのか
- Listen
+ でバーチャルホストが実装されるわけではありません。
Listen は単にメインサーバにどのアドレスとポートを listen すべきかを
教えるだけです。
<VirtualHost>
diff --git a/docs/manual/bind.xml.meta b/docs/manual/bind.xml.meta
index ce6d33b256..f08c64c7ba 100644
--- a/docs/manual/bind.xml.meta
+++ b/docs/manual/bind.xml.meta
@@ -9,7 +9,7 @@
- ScriptAlias /cgi-bin/ /usr/local/apache/cgi-bin/
+ ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/
デフォルト位置に Apache をインストールしたならば、
@@ -88,12 +86,12 @@
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 はエラーメッセージを返します。
UserDir
ディレクティブで彼らのホームディレクトリ配下にウェブコンテンツを持たせたいとします。
- もし、彼らが CGI プログラムを持つことを望んでいても、メインの
+ もし、彼らが CGI プログラムを持つことを望んでいても、メインの
cgi-bin
ディレクトリへのアクセスができない場合、
CGI プログラムを実行することができる他の場所が必要になります。
+
+ 任意のディレクトリで CGI の実行を許可するには二段階の設定が必要です。
+ まず、AddHandler
や SetHandler
ディレクティブによって
+ cgi-script
ハンドラが可能になっている必要があります。
+ 次に、Options
ディレクティブで
+ ExecCGI
が指定されていなければなりません。
- <Directory /usr/local/apache/htdocs/somedir>
+ <Directory /usr/local/apache2/htdocs/somedir>
Options +ExecCGI
@@ -139,43 +143,46 @@
プログラムとしてみなすことをサーバに伝えます:
- AddHandler cgi-script cgi pl
+ AddHandler cgi-script .cgi .pl
.htaccess
- ファイルは、ディレクトリ毎にディレクティブを指定する方法です。
- Apache は、リソースを提供するときに、
- 提供するファイルが置かれているディレクトリ中の .htaccess
- というファイルを参照します。そのファイルを発見したら、
- その中で発見されたディレクティブが適用されます。
+
.htaccess
チュートリアル
+ は httpd.conf
を変更できない場合にどうやって CGI プログラムを
+ 使えるようにするかを説明しています。
.htaccess
ファイルは、
- AllowOverride
- ディレクティブの指定により使えるようになります。
- AllowOverride
- ディレクティブは、.htaccess
- ファイルで、どのタイプのディレクティブが設定できるか、
- あるいは全く指定できないかを指定します。
- この目的に必要になるディレクティブを使用できるようにするには、
- サーバのメインの設定で、以下の設定が必要になります:
+
+ .cgi
で終わるすべてのファイルに対して CGI プログラムの
+ 実行を許可するには、以下の設定を使用できます。
- AllowOverride Options
+ <Directory /home/*/public_html>
+
+ Options +ExecCGI
+ AddHandler cgi-script .cgi
+
+ </Directory>
.htaccess
- ファイルでは、次のディレクティブが必要となります:
ユーザディレクトリの cgi-bin
サブディレクトリの
+ すべてのファイルを CGI プログラムとして指定したい場合には
+ 以下のようなものを使います。
- Options +ExecCGI
+ <Directory /home/*/public_html/cgi-bin>
+
+ Options ExecCGI
+ SetHandler cgi-script
+
+ </Directory>
この設定では、このディレクトリにおける CGI - プログラムの実行を許可するよう Apache に伝えます。
Content-Type
を CGI プログラム内で
+ セットしたかを確認してください。これに対する例外は、サーバが suexec - を使用するよう設定されている場合です。suexec は、CGI - プログラムが置かれているバーチャルホストまたはユーザの - ホームディレクトリによって、異なるユーザ権限で実行されるようにします。 - suexec はとても厳しいパーミッションのチェックがあり、 - そのチェックを通過できないと "Internal Server Error" となり、その - CGI プログラムの実行は失敗します。 - この場合、どのセキュリティチェックが失敗しているのかを知るために - suexec ログファイルをチェックする必要があります。
-コマンドラインからプログラムを実行するとき、 +
コマンドラインからプログラムを実行するとき、 意識しなくてもシェルに渡される情報があります。 例えば、参照するファイルのためにどこを検索したらよいかを - シェルに伝えるパスがあります。
+ シェルに伝えるPATH
があります。
プログラムが CGI プログラムとしてウェブサーバによって実行されるとき、
- それはパスを持ちません。CGI プログラム内で呼び出すあらゆるプログラム
- (例えば、'sendmail' のようなもの) は、
+ それは同じ PATH
ではないかもしれません。
+ CGI プログラム内で呼び出すあらゆるプログラム
+ (例えば、sendmail
のようなもの) は、
フルパスで指定する必要があるでしょう。それにより、CGI
プログラムを実行しようとしたとき、
シェルはそのようなプログラムを見つけることができます。
これがインタープリタへの実際のパスであることを確実にしておきます。
-CGI プログラムが失敗するのは大抵、プログラム自身に問題がある場合です。 一度 CGI の使い方を理解し、前述の二つの誤りを犯していないならば、 - まず間違いなくそうでしょう。ブラウザを通してテストを行う前に必ず、 - コマンドラインからプログラムの実行を試しなさい。 - これにより、大抵の問題が起こらなくなります。
+ まず間違いなくそうでしょう。ブラウザを使ってテストする前に + まず確認することは、コマンドラインからプログラムが実行できることです。 + 例えば、以下を実行してみてください: + +
+ cd /usr/local/apache2/cgi-bin
+ ./first.pl
+
(perl
インタプリタは呼ばないでください。
+ シェルと Apache がスクリプトの最初の行の パス情報 を使って見つけます。)
最初にプログラムから出力されるのは Content-Type
を含み、
+ 後に空行の続く HTTP ヘッダでなければなりません。他のものが出力されている
+ 場合は、Apache はこのプログラムをサーバ経由で実行しようとしたときには
+ Premature end of script headers
エラーを出力します。詳細は
+ 上記の CGI プログラムを書く を読んでください。
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 プログラミングに習熟すると、 裏で起こっていることについて更に理解すること役に立ちます。 - ブラウザとサーバがどのように相互通信するかについては特にそうです。 + ブラウザとサーバがどのように相互通信するかについては特にそうです。 なぜなら、"Hello, World." を印字するプログラムを書くことはおおいに結構ですが、 それは特に有益ではありません。
@@ -393,7 +433,7 @@ そして、公式のリストにはないいくつかの変数が表示されているかもしれません。 さらに、Apache はデフォルトで用意されている基本的なものに あなた自身の環境変数を加えるための、 - 多くの異なる方法を用意してします。 + 多くの異なる方法を用意してします。
#!/usr/bin/perl
@@ -441,7 +481,7 @@
METHOD
属性の設定で指定します。
CGI プログラムは、その文字列を役に立つ情報に分割する責任があります。 - 幸いにも、そのデータ処理を助けるライブラリやモジュールが存在します。 + 幸いにも、そのデータ処理を助けるライブラリやモジュールが存在します。 これらは、CGI プログラムの他の面でも同様に役に立ちます。
CGI の問題について、加わっているメーリングリストまたはニュース グループに質問を送るとき、起こったもの、起こってほしいこと、 実際に起こったことがどう違うか、使用しているサーバ、 - CGI プログラムを記述している言語に関する十分な情報と、 + CGI プログラムを記述している言語に関する十分な情報と、 可能であれば問題のコードを提供するようにしてください。 そうすることで、問題がより間単に見つかるようになります。
diff --git a/docs/manual/howto/cgi.xml.meta b/docs/manual/howto/cgi.xml.meta index 5b9018576f..ee3c3b54a4 100644 --- a/docs/manual/howto/cgi.xml.meta +++ b/docs/manual/howto/cgi.xml.meta @@ -7,6 +7,6 @@suEXEC 機能により、Apache ユーザは Web サーバを実行しているユーザ ID とは @@ -437,28 +435,11 @@ -
suEXEC 設定の確認
-
- suEXEC wrapper をコンパイルしてインストールする前に、設定内容を
- --layout
オプションで確認できます。
- 出力例:
- suEXEC setup:
- suexec binary: /usr/local/apache2/sbin/suexec
- document root: /usr/local/apache2/share/htdocs
- userdir suffix: public_html
- logfile: /usr/local/apache2/var/log/suexec_log
- safe path: /usr/local/bin:/usr/bin:/bin
- caller ID: www
- minimum user ID: 100
- minimum group ID: 100
-
suEXEC wrapper
のコンパイルとインストール
--enable-suexec
オプションで suEXEC 機能を有効にすると、
"make" コマンドを実行した時に suexec
のバイナリ (Apache 自体も)
- が自動的に作成されます。
+ が自動的に作成されます。
すべての構成要素が作成されると、それらのインストールには
make install
コマンドが実行できます。バイナリイメージの suexec
@@ -477,7 +458,7 @@
システム上でこのチェックが行なわれる前に、
suEXEC が呼ぶシステムやライブラリが脆弱である可能性は残ります。対抗策として、
一般に良い習慣ともされいますが、
- ファイルシステムパーミッションを使って
+ ファイルシステムパーミッションを使って
Apache の実行時のグループのみが suEXEC を実行できるように
するのが良いでしょう。
起動時に、Apache は --sbindir
オプションで設定されたディレクトリで
suexec
を探します
- (デフォルトは "/usr/local/apache/sbin/suexec") 。
+ (デフォルトは "/usr/local/apache/sbin/suexec") 。
適切に設定された suEXEC がみつかると、
エラーログに以下のメッセージが出力されます。
これを変更するのは危険です。この指定に含まれる各パスが 信頼できる - ディレクトリであることを確認してください。 + ディレクトリであることを確認してください。 世界からのアクセスにより、誰かがホスト上でトロイの木馬 を実行できるようにはしたくないでしょう。
diff --git a/docs/manual/suexec.xml.meta b/docs/manual/suexec.xml.meta index e0cc057f5b..eb64d9e261 100644 --- a/docs/manual/suexec.xml.meta +++ b/docs/manual/suexec.xml.meta @@ -7,7 +7,7 @@この文書では名前ベースのバーチャルホストをどんなとき、 どうやって使うかを説明します。
-NameVirtualHost
ディレクティブで設定します。通常、NameVirtualHost
で
*
の属性を使ってサーバの全ての IP アドレスを使います。
+ (例えば SSL の使用などで) 複数のポートを使うことを計画しているのであれば、
+ 引数に *:80
のようにポートも含めるようにしてください。
NameVirtualHost
ディレクティブで
IP アドレスを書いても、
自動的にサーバがその IP アドレスをリッスンするということはないことに
@@ -98,21 +96,21 @@
ディレクティブの引数は NameVirtualHost
ディレクティブの引数と同じにしてください (すなわち、IP アドレスか、全てのアドレスを意味する
*
)。それぞれの <VirtualHost>
- ディレクティブの中には、最低限、どのホストが扱われるかを示す ServerName
ディレクティブと、
+ ディレクティブの中には、最低限、どのホストが扱われるかを示す ServerName
ディレクティブと、
そのホスト用のコンテンツがファイルシステム上のどこにあるかを示す
DocumentRoot
ディレクティブを
書く必要があります。
既にあるウェブサーバにバーチャルホストを追加する場合、
- 既存のウェブサーバに対しても <VirtualHost>
- ブロックを作らなければなりません。このバーチャルホストの
- ServerName
と
- DocumentRoot
- は、グローバルな ServerName
と
- DocumentRoot
- と同じものにします。また、このバーチャルホストを設定ファイルの中で
- 先頭に置いて、デフォルトホストとして動作するようにします。
既にあるウェブサーバにバーチャルホストを追加する場合、
+ 既存のウェブサーバに対しても <VirtualHost>
+ ブロックを作らなければなりません。このバーチャルホストの
+ ServerName
と
+ DocumentRoot
+ は、グローバルな ServerName
と
+ DocumentRoot
+ と同じものにします。また、このバーチャルホストを設定ファイルの中で
+ 先頭に置いて、デフォルトホストとして動作するようにします。
たとえば、www.domain.tld
を動かしていて、
@@ -122,26 +120,30 @@
に以下のようなコードを追加するだけです
- NameVirtualHost *
-
- <VirtualHost *>
-
- ServerName www.domain.tld
- DocumentRoot /www/domain
-
- </VirtualHost>
-
- <VirtualHost *>
-
- ServerName www.otherdomain.tld
- DocumentRoot /www/otherdomain
-
- </VirtualHost>
+ NameVirtualHost *:80
+
+ <VirtualHost *:80>
+
+ ServerName www.domain.tld
+ ServerAlias domain.tld *.domain.tld
+ DocumentRoot /www/domain
+
+ </VirtualHost>
+
+ <VirtualHost *:80>
+ ServerName www.otherdomain.tld
+ DocumentRoot /www/otherdomain
+
+ </VirtualHost>
NameVirtualHost
及び
VirtualHost
のどちらの場合も、
- * の部分には明示的に IP アドレスを指定することができます。
複数の名前でサーバアクセスができるようにしたいことも多いでしょう。
このようなことは、ServerAlias
ディレクティブを <VirtualHost>
@@ -150,10 +152,10 @@
次のように一覧に挙げられた名前が、
ユーザが同一のウェブサイトとして目にして使用できるサーバ名である、
と ServerAlias
- ディレクティブで指定できます。
- ServerAlias domain.tld *.domain.tld
+ ServerAlias domain.tld *.domain.tld
domain.tld
ドメインへの全てのホストへのリクエストは
@@ -221,15 +223,15 @@
設定例
- NameVirtualHost 111.22.33.44
-
- <VirtualHost 111.22.33.44>
-
- ServerName www.domain.tld
- ServerPath /domain
- DocumentRoot /web/domain
-
- </VirtualHost>
+ NameVirtualHost 111.22.33.44
+
+ <VirtualHost 111.22.33.44>
+
+ ServerName www.domain.tld
+ ServerPath /domain
+ DocumentRoot /web/domain
+
+ </VirtualHost>
この例にはどういう意味があるでしょうか? これは @@ -242,7 +244,7 @@ という意味です。
これが動作するようにするには、
- プライマリのバーチャルホストのページに
+ プライマリのバーチャルホストのページに
http://www.domain.tld/domain/
へのリンクを設置します。
そして、バーチャルホストのページでは、純粋な相対リンク (例:
"file.html
" や "../icons/image.gif
")、
diff --git a/docs/manual/vhosts/name-based.xml.meta b/docs/manual/vhosts/name-based.xml.meta
index 3630d30c9e..5c011302e2 100644
--- a/docs/manual/vhosts/name-based.xml.meta
+++ b/docs/manual/vhosts/name-based.xml.meta
@@ -8,7 +8,7 @@