第20章 Apache HTTP サーバ

目次

20.1. クイックスタート
20.2. Apache の設定
20.3. Apache の起動と停止
20.4. モジュールのインストール/有効化/設定
20.5. CGI スクリプトを動作させる方法
20.6. SSL で通信の機密を保持する Web サーバの設定
20.7. セキュリティ問題の回避
20.8. トラブルシューティング
20.9. さらなる情報

概要

Apache HTTP サーバ (Apache) は、 http://www.netcraft.com/ の調査によると 50% 以上ものシェアを持つ Web サーバで、世界で最もよく 使用されている Web サーバです。 Apache Software Foundation (http://www.apache.org/) で開発されている Apache は 多くのオペレーティングシステムで利用することができます。 openSUSE® には Apache バージョン 2.2 が含まれています。この章では、 Apache Web サーバのインストールから設定、 SSL や CGI の使用方法、および トラブル発生時の解決方法について、それぞれ言及しています。

20.1. クイックスタート

この章を読み進めていくことで、 Apache の設定と起動を簡単に行なうことが できます。 Apache のインストールと設定は、 root の状態から行ないます。

20.1.1. 事前要件

Apache Web サーバを設定する前に、下記の要件を全て満たしていることをご確認 ください:

  1. 対象となるマシンのネットワーク設定が正しく行なわれていることを確認して ください。詳しくは 第13章 ネットワークの基礎 をお読みください。

  2. 対象となるマシンのシステム時刻が、タイムサーバを利用して正確に同期できて いることを確認してください。これは、 HTTP プロトコルがシステムの時刻に 依存して動作していることによるものです。詳しくは 第17章 NTP を利用した時刻同期 をお読みください。

  3. 最新のセキュリティ更新がインストールされていることを確認してください。 YaST オンライン更新を利用することで、最新かどうかを確認することができます。

  4. 既定の Web サーバポート (ポート 80) がファイアウオールで 開くように設定されていることを確認してください。これを行なうには、 SuSEFirewall2 で外部ゾーンに対し、 HTTP サーバ を許可するよう設定する必要が あります。この作業は YaST から行なうことができます。詳しくは 項 「YaST を利用したファイアウオールの設定」 (第14章 マスカレードとファイアウオール, ↑セキュリティガイド) をお読みください。

20.1.2. インストール

openSUSE において、 Apache は既定ではインストールされません。 すぐに使うことのできる 標準設定でインストールを行なうには、下記の 手順を行ないます:

手順20.1 既定の設定での Apache インストール

  1. YaST を起動し、 ソフトウエア+ソフトウエア管理 を選択します。

  2. フィルタ+パターン を選択し、 サーバ機能 内の Web および LAMP サーバ を選択します。

  3. 依存関係のパッケージのインストールについて確認を行ない、インストール処理を 完了します。

上記の手順でのインストールには、 PHP5 モジュールと apache2-prefork マルチプロセッシングモジュールと PHP5 モジュールが含まれています。モジュールについて、詳しくは 20.4項 「モジュールのインストール/有効化/設定」 をお読みください。

20.1.3. 起動

Apache はシステムの起動時に自動起動するように設定することができるほか、手動で 起動するようにも設定できます。

手順20.2 Apache の自動起動設定

  1. まずはランレベル 3 および 5 で システムが起動する際、 Apache が自動的に起動するかどうかを確認します。 具体的には下記のコマンドを入力します:

    chkconfig -a apache2
  2. 上記以外にも、 YaST を起動して システム+システムサービス (ランレベル) を選択する ことでも設定することができます。

  3. apache2 の項目を探し、 有効にする ボタンを押してサービスを有効に設定します。

    これで Web サーバが即時に起動します。

  4. 最後に設定を保存するため、 完了 ボタンを押します。

    これでシステムの起動時、ランレベルが 3 および 5 であれば Apache が自動で起動するようになります。

シェルを利用して Apache を手動で起動するには、 rcapache2 start コマンドを実行します。

手順20.3 Apache が起動しているかどうかの確認

Apache の起動時に何もエラーメッセージが表示されていなければ、通常 Web サーバ は起動している状態になっているはずです。確認は下記の手順で行ないます:

  1. ブラウザを起動し、 http://localhost/ を開きます。

    Apache が起動していて問題なく動作していれば、 It works! で始まるテストページが表示されるはずです。

  2. 上記のページが表示されない場合は、 20.8項 「トラブルシューティング」 をお読みください。

これで Web サーバを起動することができました。必要なドキュメントを追加したり、 必要に応じて設定を調整したり、モジュールをインストールして機能を追加したり することができるようになっています。

20.2. Apache の設定

openSUSE における Apache は、 2 種類の方法で設定することができます:

手作業での設定ではより細かい設定を行なうことができますが、 YaST GUI のような利便性は 備わっていません。

[Important]設定変更後の Apache の再読み込みまたは再起動について

設定のうちの多くは、変更された設定を反映するために Apache の再読み込み (または再起動) が必要です。手作業で Apache を再読み込みさせるには、 rcapache2 reload コマンドを 実行するか、もしくは 20.3項 「Apache の起動と停止」 に書かれて いる再起動オプションを利用します。

YaST を利用して Apache を設定する場合、 20.2.3.2項 「HTTP サーバ設定」 に書かれている HTTP サービス有効 に設定されていると、 YaST が自動で判断して処理を行ないます。

20.2.1. Apache の設定ファイル

この章では、 Apache の設定ファイルについて概要を示しています。 YaST を利用して 設定を行なう場合は、これらのファイルを直接操作する必要はありません—ただし、 後から手作業による設定に切り替える場合に備え、これらの情報を知っておくとよい でしょう。

Apache の設定ファイルは 2 箇所の異なる場所に配置されています:

20.2.1.1. /etc/sysconfig/apache2

/etc/sysconfig/apache2 では、読み込むべきモジュール や取り込むべき追加設定ファイル、サーバ起動時の設定フラグやコマンドラインに 追加すべきフラグなど、Apache に関するいくつかのグローバル設定を保持しています。 このファイル内にある各設定オプションは詳しくドキュメント化されているため、 ここでは敢えて説明を行ないません。一般用途の Web サーバであれば、 /etc/sysconfig/apache2 内にある設定だけで十分に 要件を満たすことができるはずです。

20.2.1.2. /etc/apache2/

/etc/apache2/ では Apache に必要な全ての設定ファイル を保持しています。下記ではこのディレクトリ以下にある各ファイルの目的について 説明を行ないます。各ファイルにはいくつかの設定オプション (ディレクティブ と表現する場合もあります) が含まれていて、これらのファイルに含まれる設定 オプションは詳しくドキュメント化されているため、ここでは一つずつの設定 オプションについて説明を行なうことはしません。

Apache の設定ファイルは下記のような構成になっています:

/etc/apache2/
     |
     |- charset.conv 
     |- conf.d/
     |   |
     |   |- *.conf
     |
     |- default-server.conf
     |- errors.conf
     |- httpd.conf
     |- listen.conf
     |- magic
     |- mime.types
     |- mod_*.conf
     |- server-tuning.conf
     |- ssl.*
     |- ssl-global.conf
     |- sysconfig.d
     |   |
     |   |- global.conf
     |   |- include.conf
     |   |- loadmodule.conf . .
     |
     |- uid.conf
     |- vhosts.d
     |   |- *.conf

/etc/apache2 内の Apache 設定ファイル

charset.conv

様々な言語に対して使用する文字セットを指定するファイルです。 編集を行なってはいけません。

conf.d/*.conf

他のモジュールから追加される設定ファイルです。これらの設定ファイルは、 必要に応じてお使いの仮想ホスト設定から取り込むことができます。 例として vhosts.d/vhost.template ファイルを お読みください。これを行なうことで、それぞれの仮想ホストで別々の モジュールを利用することができます。

default-server.conf

全ての仮想ホストに適用されるグローバルな設定で、多くの既定値が設定 されています。これらの値を変更するのではなく、各仮想ホスト側の設定で 設定を上書きしてください。

errors.conf

Apache がどのようにしてエラー応答を行なうのかを指定します。全ての仮想 ホストに対してエラーメッセージをカスタマイズするには、このファイルを 編集してください。お使いの各仮想ホストの設定内でこれらを上書きすること もできます。

httpd.conf

Apache サーバの設定ファイルのメインです。このファイルについては変更 は避けてください。このファイルは主にグローバルな設定を取り込む ための仕組みを用意しています。それぞれのグローバルな設定を変更する 際は、この一覧内にある適切な設定ファイルに設定してください。また、 各仮想ホストの設定 (たとえばドキュメントルートなど) は、仮想ホストの 設定で行なってください。

listen.conf

Apache に対して、待ち受けるべき IP アドレスとポートを指定するファイルです。 名前ベースの仮想ホストについても、こちらで設定を行ないます。詳しくは 20.2.2.1.1項 「名前ベースの仮想ホスト」 をお読みください。

magic

mime_magic モジュールが使用するデータで、 Apache が未知のファイルについて MIME タイプを自動判別するのに使用します。変更しないでください。

mime.types

システムで既知となっている MIME タイプの一覧です (実際には /etc/mime.types へのリンクになっています) 。 編集はしないでください。ここに記載されていない MIME タイプを新しく 追加したい場合は、 mod_mime-defaults.conf ファイルに追記してください。

mod_*.conf

既定でインストールされるモジュール向けの設定です。詳しくは 20.4項 「モジュールのインストール/有効化/設定」 をお読みください。 なお、任意指定のモジュールに関する設定は、 conf.d ディレクトリ内にあります。

server-tuning.conf

様々な MPM (MPM については 20.4.4項 「マルチプロセッシングモジュール (MPM)」 をお読みください) に対する設定ディレクティブが含まれているほか、 Apache の性能を決める一般的な設定オプションが含まれています。これらの 項目について変更する場合は、よくテストを行なってください。

ssl-global.conf and ssl.*

グローバルな SSL 設定と SSL の証明書データが含まれています。 詳しくは 20.6項 「SSL で通信の機密を保持する Web サーバの設定」 をお読みください。

sysconfig.d/*.conf

/etc/sysconfig/apache2 の設定から自動生成された 設定ファイルです。これらのファイルは直接編集を行なわず、 /etc/sysconfig/apache2 ファイルのほうを編集して ください。また、このディレクトリには自動生成されるファイル以外は配置 してはなりません。

uid.conf

Apache が動作する際のユーザおよびグループ ID を指定するファイルです。 変更はしないでください。

vhosts.d/*.conf

構築したい仮想ホストの設定をここに配置します。このディレクトリには SSL 無しの場合と有りの場合の両方について、仮想ホストの雛型ファイルが 含まれています。また、このディレクトリ内に存在し、 .conf で終わるファイルは、 Apache の設定内に 自動で取り込まれる仕組みになっています。詳しくは 20.2.2.1項 「仮想 (バーチャル) ホストの設定」 をお読みください。

20.2.2. Apache の手作業による設定

Apache を手作業で設定する場合、ユーザ root からテキスト形式の設定ファイルを編集して行ないます。

20.2.2.1. 仮想 (バーチャル) ホストの設定

仮想ホスト とは、 1 台の Apache から複数の URI (統一資源識別子) に対するサービスを提供する仕組みです。たとえば www.example.com と www.example.net のように、物理的に 1 台だけのマシンで動作する単一の Web サーバで、複数のドメインを取り扱うこともできます。

仮想ホストは、管理面の手間を省くため (管理する Web サーバを 1 台にまとめる ことができる) と、ハードウエアの費用を削減するため (各ドメインで専用の サーバを必要としない) に使用します。仮想ホストはホスト名 (名前ベース) を 基準に設定することができるほか、 IP アドレスを基準にしたりポート番号を基準 にしたりすることもできます。

全ての設定済み仮想ホストを表示するには、 httpd2 -S を利用します。これにより既定のサーバと全ての仮想ホストが表示され、 それらの IP アドレスやポート番号などがあわせて表示されます。さらに、設定ファイル 内で仮想ホストが設定されている場所についても表示されます。

仮想ホストは 20.2.3.1.4項 「仮想ホスト」 に書かれている手順で YaST から設定することができるほか、設定ファイルを手作業で 変更することによっても設定できます。 openSUSE の既定では、仮想ホストごとに 1 つの 設定ファイルを /etc/apache2/vhosts.d/ 内に作成する 仕組みになっています。このディレクトリ内にあり、かつファイル名が .conf で終わるファイルは、自動的に設定として 取り込まれるようになっています。また、仮想ホストを設定する際のテンプレート についても、このディレクトリ内に配置されています。それぞれ vhost.template (SSL 無し) と vhost-ssl.template (SSL 有り) のファイルがあります。

[Tip]仮想ホストの設定の必要性について

設定しようとしている Web サーバが 1 つのドメインだけをまかなうものであった 場合であっても、仮想ホストの設定ファイルを常に作成しておくことをお勧めします。 これを行なうと、ドメイン固有の設定を別途のファイルに分けて保存することになる ので、単純に仮想ホストの設定ファイルを移動/削除/名前変更するだけで、うまく 動作していたはずの元の基本設定に戻すことができるようになります。また同じ 理由から、仮想ホストごとに別々の設定ファイルを作成してください。

なお名前ベースの仮想ホストを使用する場合、どの仮想ホスト設定にも該当しない ドメイン名でアクセスが行なわれた場合に対して、既定の仮想ホスト設定を追加して おくことをお勧めします。既定の仮想ホストは設定ファイルとして最初に 読み込まれるファイルで、設定ファイルの読み込み順序はファイル名で判断される 仕組みになっています。そのため、アンダースコア文字 (_) で 始まるファイル (たとえば _default_vhost.conf) を 作成して設定することをお勧めします。

<VirtualHost></VirtualHost> のブロックには、それぞれのドメインに適用される情報が記載されています。 Apache が設定済みのホストに対するリクエストを受け取ったときは、このセクション 内のディレクティブを参照します。この仮想ホスト設定の内側では、ほとんど全ての ディレクティブを参照することができます。 Apache の設定ディレクティブについて、 詳しくは http://httpd.apache.org/docs/2.2/mod/quickreference.html をお読みください。

20.2.2.1.1. 名前ベースの仮想ホスト

名前ベースの仮想ホストの場合、 IP アドレス 1 つに対して複数の Web サイトを 構築することができます。この方法では、 Apache はクライアントから送信された ホスト名フィールドと各仮想ホスト内の ServerName を比較し、一致する仮想ホストを検索します。 ServerName に該当するものが存在しない場合、最初に設定した仮想ホストを既定のホストとして 使用します。

また、 NameVirtualHost ディレクティブは Apache に対し、 IP アドレスや (必要であれば) ポート番号のほか、 HTTP ヘッダ内に含まれる ホスト名フィールドでも仮想ホストを使用するよう設定します。このオプションは設定ファイル /etc/apache2/listen.conf 内で設定します。

NameVirtualHost に設定する最初のパラメータは 完全修飾ドメイン名ですが、 IP アドレスで設定することをお勧めします。 2 番目の パラメータはポート番号で、必ずしも指定する必要はありません。既定では Listen ディレクティブでの設定から、ポート 80 を使用します。

また IP アドレスやポート番号の指定には、ワイルドカード * を指定することもできます。この場合は全てのインターフェイスに対するリクエスト を仮想ホストとして設定することを意味します。また、 IPv6 アドレスを設定する 場合は、大括弧で括らなければなりません。

例20.1 様々な名前ベースの VirtualHost 設定

# NameVirtualHost IP-address[:Port]
NameVirtualHost 192.168.3.100:80
NameVirtualHost 192.168.3.100
NameVirtualHost *:80
NameVirtualHost *
NameVirtualHost [2002:c0a8:364::]:80

VirtualHost の開始タグのパラメータには、 NameVirtualHost で設定した IP アドレス (または 完全修飾ドメイン名) を指定します。 NameVirtualHost で設定したポート番号については任意指定です。

IP アドレスの代用として、ワイルドカード * を指定する こともできます。このワイルドカードは NameVirtualHost * を設定した場合にのみ利用できます。 IPv6 アドレスを利用する場合、そのアドレス 指定は大括弧で括らなければなりません。

例20.2 Name-Based VirtualHost Directives

<VirtualHost 192.168.3.100:80>
  ...
</VirtualHost>

<VirtualHost 192.168.3.100>
  ...
</VirtualHost>

<VirtualHost *:80>
  ...
</VirtualHost>

<VirtualHost *>
  ...
</VirtualHost>

<VirtualHost [2002:c0a8:364::]>
  ...
</VirtualHost>

20.2.2.1.2. IP ベースの仮想ホスト

この仮想ホスト方法を利用するには、対象のマシンに複数の IP アドレスを 設定する必要があります。それぞれの IP に割り当てられたドメインに対し、 Apache は 1 つのインスタンスで動作します。

IP ベースの仮想ホストでは、それぞれの仮想ホストに対して 1 つの IP アドレス を設定しなければなりません。お使いのマシンに複数のネットワークカードが存在 しない場合でも、仮想的なネットワークインターフェイス (IP エイリアス) も設定 することができます。

下記は IP アドレス 192.168.3.100 で動作するマシンの Apache 設定例で、追加の IP アドレス 192.168.3.101 および 192.168.3.102 でそれぞれ 1 つ ずつのドメインをまかなう場合のものです。下記のとおりそれぞれの仮想ホストに 対し、別々の VirtualHost ブロックを設定する必要が あります。

例20.3 IP ベースの VirtualHost 設定

<VirtualHost 192.168.3.101>
  ...
</VirtualHost>

<VirtualHost 192.168.3.102>
  ...
</VirtualHost>

ここで VirtualHost は、 192.168.3.100 以外のインターフェイスに対してのみ設定 していることに注意してください。 Listen ディレクティブで 192.168.3.100 のアドレスについても 設定する場合、そのアドレス宛に届いた HTTP リクエストに応答するには、 別途の IP ベース仮想ホストを追加しなければなりません。設定しなかった場合は、 既定のサーバ設定 (/etc/apache2/default-server.conf) が使用されます。

20.2.2.1.3. 基本的な仮想ホスト設定

それぞれの仮想ホストを設定するには、少なくとも各仮想ホストの設定内に下記の ディレクティブを設定する必要があります。さらに詳しいオプション設定を 行ないたい場合は、 /etc/apache2/vhosts.d/vhost.template をお読みください。

ServerName

その仮想ホストに割り当てる完全修飾ドメイン名を指定します。

DocumentRoot

このホストから Apache がファイルを提供するにあたって、基準となる ディレクトリを指定します。なおセキュリティ上の理由から、ファイルシステム 全体に対するアクセスは既定では禁止されるようになっています。そのため、 Directory コンテナを利用することで、明示的に 禁止を解除するよう設定してください。

ServerAdmin

サーバ管理者の電子メールアドレスを指定します。たとえば、このアドレスは Apache が生成するエラーページで表示されます。

ErrorLog

この仮想ホストに対するエラーログファイルを指定します。仮想ホスト ごとに個別のエラーログを作成する必要はありませんが、デバッグが容易になる ことから、個別に作成しておくことをお勧めします。 /var/log/apache2/ が Apache のログファイルに 関する既定のディレクトリです。

CustomLog

この仮想ホストに対するアクセスログです。仮想ホストごとに個別のエラー ログを作成する必要はありませんが、各ホストについて個別の分析を行なう ことができるという理由から、個別に作成しておくことをお勧めします。 /var/log/apache2/ が Apache のログファイルに 関する既定のディレクトリです。

上記のようにセキュリティ上の理由から、ファイルシステム全体へのアクセスは 既定で禁止されています。そのため、 Apache がサービスを提供すべき ディレクトリについては、明示的に禁止を解除しなければなりません。たとえば DocumentRoot であれば、下記のようになります:

<Directory "/srv/www/www.example.com/htdocs">
  Order allow,deny
  Allow from all
</Directory>

基本的な設定をそろえると、下記のようになります:

例20.4 基本的な VirtualHost 設定

<VirtualHost 192.168.3.100>
  ServerName www.example.com
  DocumentRoot /srv/www/www.example.com/htdocs
  ServerAdmin webmaster@example.com
  ErrorLog /var/log/apache2/www.example.com_log
  CustomLog /var/log/apache2/www.example.com-access_log common
  <Directory "/srv/www/www.example.com/htdocs">
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

20.2.3. YaST を利用した Apache の設定

YaST を利用して Web サーバを設定するには、 YaST を起動してから ネットワークサービス+HTTP サーバ を選択します。このモジュールを初めて起動した場合 は HTTP サーバウイザード が起動し、サーバ管理について いくつかの基本事項を質問します。このウイザードを終了すると、以降の HTTP サーバ モジュールの起動では HTTP サーバ設定 ダイアログが表示されるようになります。

20.2.3.1. HTTP サーバウイザード

HTTP サーバウイザードは 5 つの段階から構成されています。ダイアログの最後の 段階では、熟練者向けの設定を行なってより詳しい設定を施すことができます。

20.2.3.1.1. ネットワークデバイスの選択

ここでは Apache が要求を受け付けるために利用する、ネットワークインターフェイス を指定します。既存のネットワークインターフェイスと IP アドレスから、任意の 組み合わせで選択することができます。また、他のサービスが予約していない任意の ポート (既知の (Well-known) ポートや登録済みのポート、および動的なポートや プライベートなポート) を使用することができます。既定の設定では、全ての ネットワークインターフェイスに対して 80 番のポートで 待ち受ける設定になっています。

Web サーバが待ち受けるポートについて、ファイアウオール側でポートを開くには、 ファイアウオールでポートを開く を選択します。この設定は LAN や WAN 、インターネットなどのネットワークに対して Web サーバを公開する 場合に必要な設定です。ポートを閉じたままにする設定は、テストなどで外部からの アクセスを禁止したい場合にのみ有用な設定です。複数のネットワーク インターフェイスをご利用の場合は、 ファイアウオールの詳細... を押してポートを開きたいインターフェイスを選択してください。

次へ を押すと設定を続けることができます。

20.2.3.1.2. モジュール

モジュール 設定オプションでは、 Web サーバがサポートすべき スクリプト言語を有効にしたり無効にしたりすることができます。その他のモジュールを設定 するには、 20.2.3.2.2項 「サーバモジュール」 をお読みください。 次へ を押すと設定を続けることができます。

20.2.3.1.3. 既定のホスト

この設定では既定のホストを設定します。 20.2.2.1項 「仮想 (バーチャル) ホストの設定」 で説明しているとおり、 Apache は単一のマシンで複数の仮想ホストを稼働させる ことができます。設定ファイル内で最初に設定したホストのことを 既定のホスト と言いますが、ここではこれを設定します。 それぞれの仮想ホストは既定のホストの設定を引き継ぎます。

ホストの設定 (ディレクティブ とも呼ばれます) を編集する には、表内から変更したい項目を選んで 編集 を押します。 新しいディレクティブを追加するには 追加 を、ディレクティブ を削除するには対象のものを選んで 削除 を押してください。

図20.1 HTTP サーバウイザード: 既定のホスト

HTTP サーバウイザード: 既定のホスト

それぞれ下記にサーバの設定項目を示します:

ドキュメントルート

このホストが提供すべきファイルが存在するディレクトリを指定します。 既定では /srv/www/htdocs に設定されています。

Alias

Alias ディレクティブを使用することで、 URL と 物理的なファイルの場所について、割り当てを変更することができます。これにより ファイルシステム内の ドキュメントルート 以外の場所に ファイルを配置し、 URL 経由でアクセスさせることができるようになります。

openSUSE の既定値では、 Alias の設定として /icons/usr/share/apache2/icons を指すように設定されています。これにより Apache からディレクトリ一覧を 参照すると、アイコンが表示されるようになっています。

ScriptAlias

これは Alias ディレクティブに似た設定で、 ScriptAlias も URL とファイルシステムの場所に ついて割り当てを設定します。ただし ScriptAlias は CGI の場所を変更するためのもので、指定した場所で CGI を実行できるように することができます。

Directory

Directory を利用すると、指定したディレクトリ に対してのみ適用させる設定群を作成することができます。

既定ではそれぞれ /srv/www/htdocs, /usr/share/apache2/icons, /srv/www/cgi-bin ディレクトリに対する設定が存在しています。既定の設定から変更すべきでは ありません。

Include

Include ディレクティブを利用すると、追加の 設定ファイルを取り込むように設定することができます。既定では 2 つの Include が設定されています: /etc/apache2/conf.d/ は外部のモジュールから もたらされる設定を取り込むためのもので、これによりそのディレクトリ内に 存在する .conf で終わるファイルを全て取り込みます。 2 つめは /etc/apache2/conf.d/apache2-manual.conf が設定されていて、 apache2-manual の設定ファイルを 取り込むようになっています。

サーバ名

ここではクライアントが Web サーバと通信を行なうにあたって、既定で使われる サーバ名を指定します。 http://FQDN/ でアクセスすることができるように完全修飾ドメイン名 (FQDN) を指定するか、 もしくは IP アドレスを指定します。ここでは任意の名前を入力することはできず、 指定したサーバ名で名前を解決できなければなりません。

サーバ管理者のメールアドレス

サーバ管理者のメールアドレスを指定します。ここで指定したアドレスは、たとえば Apache がエラーページを生成した場合などに表示されます。

既定のホスト の手順を終了したら、 次へ を押すと設定を続けることができます。

20.2.3.1.4. 仮想ホスト

この段階では、ウイザードは設定済みの仮想ホストを表示します (詳しくは 20.2.2.1項 「仮想 (バーチャル) ホストの設定」 を ご覧ください) 。 YaST HTTP ウイザードを開始するまでに特に何も設定していない 場合は、何も仮想ホストが表示されません。

ホストを追加するには 追加 ボタンを押します。すると、作成する ホストについて基本設定を行なうためのダイアログが表示されます。ここでは サーバ名, サーバコンテンツのルート (ドキュメントルート), 管理者のメールアドレス などを設定します。また、 サーバ解決 では、ホストの識別方法 を指定します (名前ベースまたは IP ベース) 。 仮想ホスト ID の変更 を押して、名前または IP アドレスを指定してください。

次へ を押すと、次の仮想ホスト設定ダイアログに進みます。

仮想ホスト設定の 2 番目のダイアログでは、 CGI を有効にするかどうかを設定すること ができるほか、これらのスクリプトをどのディレクトリに配置するかを設定することが できます。また、 SSL についても有効化を設定することができます。 SSL を有効に 設定する場合は、証明書のパスについても設定を行なわなければなりません。 SSL と 証明書について、詳しくは 20.6.2項 「SSL を利用する Apache の設定」 を お読みください。また ディレクトリインデックス オプションでは、 クライアントがディレクトリへのアクセスを要求した場合に出力するファイル (既定では index.html) を指定します。ここには 1 つまたは 複数のファイル (複数の場合は半角スペースで区切ります) を指定してください。また、 公開 HTML を有効にする を選択すると、ユーザの公開ディレクトリ (~ユーザ名/public_html/) にあるファイルを http://www.example.com/~ユーザ名 から公開することができるようになります。

[Important]仮想ホストの作成

仮想ホストは好き勝手に追加することはできません。名前ベースの仮想ホストを利用 している場合、ネットワーク上でそれぞれのホスト名を解決できなければなりません。 IP ベースの仮想ホストを利用している場合は、それぞれ IP アドレスごとに 1 つの 仮想ホストだけを割り当てることができます。

20.2.3.1.5. 概要

これがウイザードの最終段階です。ここでは Apache サーバの起動方法と起動タイミング (システム起動時、または手動) を設定することができます。またこれ以外にも、これまで に設定してきた項目の概要が表示されます。これまでの設定で問題がなければ、 完了 を押して設定を完了させてください。何らかの設定を変更 しなおしたい場合は、 戻る を押して必要なダイアログまで 戻って設定し直してください。また、 HTTP サーバの熟練者向け設定 を押すと、 20.2.3.2項 「HTTP サーバ設定」 に示されているダイアログが表示されるようになっています。

図20.2 HTTP サーバウイザード: 概要

HTTP サーバウイザード: 概要

20.2.3.2. HTTP サーバ設定

HTTP サーバ設定 ダイアログでは、ウイザードよりも細かい 設定を行なうことができます (ウイザードは Web サーバの初回設定時にのみ表示 されます) 。このダイアログは下記に示す 4 つのタブから構成されていますが、 いずれの設定ともすぐに反映されることはありません。設定を有効にするには、 完了 を押して設定を確認しておかなければなりません。 なお、 中止 を押すと設定モジュールを終了して変更内容を 破棄することができます。

20.2.3.2.1. 待ち受けポートとアドレス

HTTP サービス の枠内では、 Apache を起動するか (有効) 起動しないか ((無効) を選択 することができます。 待ち受けるポート の枠内では、 Apache サーバのサービスを提供させたいインターフェイスやポートをそれぞれ 追加, 編集, 削除 することができます。既定では全てのインターフェイスにてサービスを提供し、 ポート 80 で待ち受けるように設定されています。また、 Web サーバを他のホストからアクセスできるようにするため、 ファイアウオールでポートを開く についてもご確認ください。 ポートを閉じたままにする設定は、テストなどの目的で Web サーバに対して外部からの アクセスを拒否したい場合にのみ有用なものです。なお、お使いのマシンに複数の ネットワークインターフェイスが存在する場合は、 ファイアウオールの詳細... を押して、ポートを開くべきインターフェイスを設定することもできます。

さらに ログファイル ボタンでは、アクセスログやエラーログを 参照することができます。これはお使いのサーバ設定をテストしたい場合などに便利 です。ログファイルは個別のウインドウで表示され、そこから Web サーバの再起動や 再読み込みなどを行なうことができます。詳しくは 20.3項 「Apache の起動と停止」 をお読みください。これらのコマンドはすぐに反映され、それらのログメッセージも 即時に表示されます。

図20.3 HTTP サーバ設定: 待ち受けポートとアドレス

HTTP サーバ設定: 待ち受けポートとアドレス

20.2.3.2.2. サーバモジュール

それぞれモジュールを選んで 状態の切り替え ボタンを押すと、 Apache2 モジュールの状態 (有効/無効) を切り替えることができます。 モジュールの追加 ボタンを押すと、インストールされている ものの一覧に表示されていない新しいモジュールを追加することができます。 モジュールについて、詳しくは 20.4項 「モジュールのインストール/有効化/設定」 を お読みください。

図20.4 HTTP サーバ設定: サーバモジュール

HTTP サーバ設定: サーバモジュール

20.2.3.2.3. メインホストおよびホスト

これらのダイアログについては、それぞれ 20.2.3.1.3項 「既定のホスト」20.2.3.1.4項 「仮想ホスト」 をお読みください。

20.3. Apache の起動と停止

20.2.3項 「YaST を利用した Apache の設定」 に書かれている手順で YaST から設定を行なうと、ランレベル 3 および 5 であれば Apache はシステム起動時に 開始され、 0, 1, 2, 6 であれば停止するようになっています。 YaST の ランレベルエディタを利用することで、この振る舞いを変えることができるほか、 コマンドラインツール chkconfig を利用することでも 同じことを行なうことができます。

起動中のシステムから Apache を開始したり停止したり、もしくは操作したりしたい 場合は、 init スクリプト /usr/sbin/rcapache2 をご利用 ください。 rcapache2 コマンドは下記のようなパラメータを受け付けます:

status

Apache が起動しているかどうかを確認します。

start

Apache が起動していない場合、起動を行ないます。

startssl

Apache が起動していない場合、 SSL を有効にして起動を行ないます。 SSL の有効化について、詳しくは 20.6項 「SSL で通信の機密を保持する Web サーバの設定」 を お読みください。

stop

親プロセスを終了させることで、 Apache を停止します。

restart

Apache を停止したあと、起動を行ないます。その時点で起動していなかった 場合は、単に起動だけを行ないます。

try-restart

Apache が既に起動している場合にのみ、停止した後に起動を行ないます。

reload または graceful

Apache の全てのプロセスに対して、その時点で処理中の全てのリクエストを処理 したあとに停止するよう働きかけます。それぞれのプロセスが終了すると、それらは 新しく作成したプロセスに置き換えられ、最終的には Apache の 再起動 が行なわれるようにします。

[Tip]本番環境での Apache 再起動

接続が強制的に切断されたりすることなく設定を反映するには、 rcapache2 reload コマンドを ご利用ください。

restart-graceful

全ての要求に対して応答することのできる 2 つめの Web サーバを起動します。 従来まで存在していた 1 つめの Web サーバについては、 GracefulShutdownTimeout で設定した時間間隔だけ 要求に対する処理を続け、最終的には停止するようにします。

rcapache2 restart-graceful は 新しいバージョンへのアップグレードを行なった場合や、再起動を必要とする設定 変更を行なった場合に便利な方法です。このオプションを使用すると、サービスの 停止時間を最小限にすることができます。

GracefulShutdownTimeout の設定については 必ず値を入力してください。設定を行なわないと restart-graceful は通常の restart と同じ意味になってしまいます。 なお、この値に 0 を設定すると、残っている全てのリクエストを全て処理しきる まで、無期限に待機するようになります。

また restart-graceful は、必要な全ての資源を元の Apache プロセスが解放しない場合、失敗する場合があります。この場合、 このコマンドは stop-graceful と同じ動作になります。

stop-graceful

既存の全てのリクエストが処理されるようにするため、 GracefulShutdownTimeout で設定した時間間隔だけ 要求に対する処理を続け、最終的には停止します。

GracefulShutdownTimeout の設定については 必ず値を入力してください。設定を行なわないと stop-graceful は通常の restart と同じ意味になってしまいます。 なお、この値に 0 を設定すると、残っている全てのリクエストを全て処理しきる まで、無期限に待機するようになります。

configtest または extreme-configtest

現在実行中の Web サーバに影響を与えることなく、設定ファイルの文法を確認します。 この文法確認はサーバを起動/再読み込み (reload)/再起動する際に毎回行なわれる ようになっているため、テストだけを明示的に行なう必要はありません (設定エラーが 見つかった場合は、 Web サーバの起動/再読み込み (reload)/再起動は行なわれ ません) 。また extreme-configtest オプションでは nobody ユーザで Web サーバを 起動し、実際に設定の読み込みを行なってさらなるエラーを検出しようとします。 ただし SSL の証明書については nobody で読み込むことができないため、 SSL 関連の設定についてはテストを行なうことが できません。

probe

再読み込みが必要かどうかを検出 (設定が変更されたかどうかを確認し) 、 rcapache2 コマンドに設定するパラメータを提案します。

server-status および full-server-status

それぞれ簡潔なサーバ状態か、もしくは完全なサーバ状態を表示します。 mod_status モジュールを有効化しておく必要があるほか、 lynx または w3m をインストールする必要があります。また、 /etc/sysconfig/apache2 ファイル内の APACHE_SERVER_FLAGS に、 status を追加しなければなりません。

[Tip]追加フラグ

rcapache2 に追加のフラグを指定すると、それらは Web サーバに渡されます。

20.4. モジュールのインストール/有効化/設定

Apache のソフトウエアはモジュールの形で部品化されています。いくつかの中枢機能を 除き、それらの機能は全てモジュールとして提供されています。たとえば HTTP でさえも モジュール (http_core) の形になっています。

Apache のモジュールはそのソフトウエアをコンパイルする際に Apache に内蔵させる ことができるほか、実行時に動的に読み込むこともできます。どのようにして動的に 読み込むのかについては、 20.4.2項 「有効化と無効化」 をお読みください。

Apache のモジュールは下記の 4 つに分類できます:

基本モジュール

基本モジュールは既定で Apache に内蔵されます。 openSUSE の Apache では mod_so (他のモジュールを読み込むために必要な モジュール) と http_core だけが内蔵されるようになって います。その他のモジュールは全て共有オブジェクトになっていて、サーバの実行ファイル 自身に含まれることはなく、実行時に取り込むことで動作する仕組みになっています。

拡張モジュール

一般的に、拡張と呼ばれるモジュールについても Apache ソフトウエアパッケージ内 に含まれていますが、通常はサーバに内蔵されることはありません。 openSUSE では、それらは共有オブジェクトとして提供され、実行時に Apache に読み込むこと ができるようになっています。

外部モジュール

外部モジュールは公式の Apache 配布物には含まれていないものを指します。 しかしながら、 openSUSE ではいくつかの外部モジュールを提供しています。

マルチプロセッシングモジュール (MPM)

マルチプロセッシングモジュール (MPM) は Web サーバに対するリクエストを 受け付けたり処理したりする責任を負ったソフトウエアで、 Web サーバソフトウエアの 中枢部を表わすものです。

20.4.1. モジュールのインストール

20.1.2項 「インストール」 に書かれている既定の手順で Apache をインストールした場合、全ての基本モジュールと拡張モジュールの ほか、マルチプロセッシングモジュールである Prefork MPM と外部モジュール mod_php5, mod_python がそれぞれ インストールされます。

YaST から ソフトウエア+ソフトウエア管理 を起動することで、追加の 外部モジュールをインストールすることができます。ソフトウエア管理を起動したら、 フィルタ+検索 を利用し、 apache と入力することで、利用可能な 全ての外部モジュールを表示することができます。

20.4.2. 有効化と無効化

それぞれのモジュールは YaST から有効にしたり無効にしたりすることができるほか、 手作業でもこれを行なうことができます。 YaST では、 20.2.3.1項 「HTTP サーバウイザード」 に書かれている手順で スクリプト言語モジュール (PHP5, Perl, Python) を有効にしたり無効にしたりする ことができます。それ以外のモジュールについては、 20.2.3.2.2項 「サーバモジュール」 に書かれている手順で有効/無効を設定することができます。

モジュールを手作業で有効/無効に設定したい場合は、 a2enmod mod_foo コマンドか、 もしくは a2dismod mod_foo コマンドをご利用ください。また、 a2enmod -l を実行する ことで、有効に設定されている全モジュールの一覧を表示することができます。

[Important]外部モジュール向けの設定取り込み

外部モジュールを手作業で有効化した場合は、全ての仮想ホスト設定で外部モジュール 向けの設定ファイルが読み込まれることを確認してください。外部モジュール向けの 設定ファイルは /etc/apache2/conf.d/ ディレクトリ内に 置かれ、既定では読み込まれません。それぞれの仮想ホストで同じモジュールを必要 とする場合は、このディレクトリ内にある *.conf ファイルを 取り込む (include) こともできます。それ以外の場合は、個別に取り込んでも かまいません。設定例については、 /etc/apache2/vhost.d/vhost.template ファイルをお読み ください。

20.4.3. 基本モジュールと拡張モジュール

全ての基本モジュールと拡張モジュールは、 Apache のドキュメンテーション内で 詳しく説明されています。最も重要なモジュールについては、概要だけが説明 されています。各モジュールの詳しい説明は、 http://httpd.apache.org/docs/2.2/mod/ をお読みください。

mod_actions

特定の MIME タイプ (たとえば application/pdf) や特定の拡張子 (たとえば .rpm) 、もしくは特定の リクエスト種別 (たとえば GET) が要求された 際に、スクリプトを実行する手段を提供します。このモジュールは既定で有効に 設定されます。

mod_alias

Alias および Redirect ディレクティブを提供するモジュールで、 URI を特定のディレクトリに割り当てたり (Alias) 、要求された URL を別の URL に転送したり することができます。このモジュールは既定で有効に設定されます。

mod_auth*

認証モジュールは、様々な認証方法を提供するためのモジュールです。 mod_auth_basic では基本認証を、 mod_auth_digest ではダイジェスト認証を それぞれ提供します。 Apache 2.2 におけるダイジェスト認証は、実験中の ものとして提供されています。

なお、 mod_auth_basicmod_auth_digest の各モジュールは、それぞれ 認証プロバイダモジュール mod_authn_* と 認可モジュール mod_authz_* をあわせて使用する 必要があります。たとえば mod_authn_file は テキストファイルを利用した認証を提供するほか、 mod_authz_user はユーザ認可を提供します。

認証や認可について、詳しくは http://httpd.apache.org/docs/2.2/howto/auth.html にある Authentication HOWTO をお読みください。

mod_autoindex

autoindex モジュールは、索引ファイル (たとえば index.html ファイル) が存在しない場合に、自動でディレクトリの索引を生成するための モジュールです。外観については設定を変更することもできます。このモジュールは 既定で有効に設定されていますが、 Options ディレクティブで生成が無効に設定されています。ディレクトリ一覧を自動生成 させるには、それぞれの仮想ホスト内で設定を上書きしてください。このモジュール の既定の設定値は、 /etc/apache2/mod_autoindex-defaults.conf に書かれています。

mod_cgi

mod_cgi は CGI スクリプトを実行する際に必要な モジュールです。このモジュールは既定で有効に設定されています。

mod_deflate

このモジュールを利用することで、 Apache はクライアントに特定の種類のファイルを 転送する際、圧縮して転送することができるようになります。

mod_dir

mod_dir は、ディレクトリに対するアクセスがあった場合に、 どのファイルを転送するかを選択する、 DirectoryIndex ディレクティブを提供するモジュールです。既定では index.html が設定されています。このモジュールではほかにも、ディレクトリに対するアクセスがあった 場合、 URI への最後がスラッシュで終わっていないと、それを自動で補完する機能も備わって います。このモジュールは既定で有効に設定されています。

mod_env

CGI スクリプトや SSI のページに渡される、環境変数を制御するモジュールです。 httpd プロセスから起動されるシェルに対し、環境変数を設定したり設定を消したり することができます。このモジュールは既定で有効に設定されています。

mod_expires

mod_expires を利用すると、 Expires ヘッダを利用して期限切れ日時を設定することができます。期限切れ日時はプロキシサーバや ブラウザが一時記憶 (キャッシュ) のために使用します。このモジュールは既定で有効に設定されて います。

mod_include

mod_include はサーバサイドインクルード (Server Side Includes; SSI) を提供するモジュールで、 HTML ページを動的に生成するための基本機能を提供します。 このモジュールは既定で有効に設定されています。

mod_info

ブラウザから http://localhost/server-info/ の URL にアクセスすることで、 サーバ設定に関する広範囲の概要を提供するモジュールです。セキュリティ上の理由から、 この URL へのアクセスは常に制限しておかなければなりません。既定では localhost だけがアクセスを 許されるようになっています。 mod_info/etc/apache2/mod_info.conf で設定します。

mod_log_config

このモジュールを利用することで、 Apache のログファイルについて設定を行なう ことができます。このモジュールは既定で有効に設定されています。

mod_mime

MIME モジュールは、そのファイル名の拡張子に基づいて正しい MIME ヘッダを 付与するモジュールです (たとえば HTML ドキュメントの場合は text/html に設定します) 。このモジュールは既定で 有効に設定されています。

mod_negotiation

コンテントネゴシエーションと呼ばれる機能を提供するモジュールです。詳しくは http://httpd.apache.org/docs/2.2/content-negotiation.html をお読みください。このモジュールは既定で有効に設定されています。

mod_rewrite

mod_alias に似た機能を提供するモジュールですが、 ずっと高機能で柔軟性に富んだ設定を行なうことができます。 mod_rewrite を利用すると、複数のルールを設定し URL 転送を行なうことができるほか、 リクエストヘッダを元にした転送なども行なうことができます。

mod_setenvif

クライアントのリクエスト内容に応じて環境変数を設定するモジュールです。 たとえばクライアントが送信したブラウザ文字列のほか、クライアントの IP アドレスなどを基準にすることができます。このモジュールは既定で有効に設定 されています。

mod_speling

mod_speling は URL の入力ミスやスペルミスに ついて、自動修正を試みるモジュールです。たとえば大文字と小文字の間違いなどを 修正することができます。

mod_ssl

Web サーバとクライアントの間で、暗号化接続を行なうことができるようにする モジュールです。詳しくは 20.6項 「SSL で通信の機密を保持する Web サーバの設定」 をお読み ください。このモジュールは既定で有効に設定されています。

mod_status

サーバの動作や性能情報を http://localhost/server-status/ から公開する ことのできるモジュールです。セキュリティ上の理由から、この URL への アクセスは常に制限しておかなければなりません。既定では localhost だけがアクセスを 許されるようになっています。 mod_status/etc/apache2/mod_status.conf で設定します。

mod_suexec

mod_suexec は、 CGI スクリプトを特定のユーザや グループで実行させるためのモジュールです。このモジュールは既定で有効に 設定されています。

mod_userdir

~ユーザ名/ のディレクトリ から、ユーザ固有のディレクトリを提供するモジュールです。 設定ファイル内で UserDir ディレクティブを 指定しなければなりません。このモジュールは既定で有効に設定されています。

20.4.4. マルチプロセッシングモジュール (MPM)

openSUSE では、 Apache 向けに 2 種類のマルチプロセッシングモジュール (MPM) を提供しています:

20.4.4.1. Prefork MPM

Prefork MPM はスレッドを使用しない MPM で、あらかじめ fork しておくことで 動作する Web サーバを提供します。 Web サーバの動きは Apache バージョン 1.x に似たものとなり、各リクエストは独立して動作する子プロセスが処理する形に なります。そのため、問題のあるリクエストが届いた場合であっても他のプロセスの 動作を止めたりすることはなく、 Web サービスが停止してしまったりすることを 防ぐことができます。

このようにプロセスを基準にしたアプローチは安定性を提供する一方、欠点として worker MPM と比べ多くの資源を必要としてしまいます。 Prefork MPM は Unix ベースのオペレーティングシステムでは既定の MPM として採用されています。

[Important]このドキュメント内での MPM

この文書内で、 Apache は Prefork MPM を使用した場合を想定しています。

20.4.4.2. Worker MPM

Worker MPM はスレッドを利用する Web サーバです。スレッドとはプロセスよりも 軽量の 仕組みで、プロセスよりも少ない資源で動作するものです。 Worker MPM では子プロセスを fork するだけでなく、そのプロセス内で複数の スレッドを起動してリクエストを処理します。このアプローチにより、 Prefork MPM よりも少ない資源で高い性能を発揮するような仕組みになっています。

Worker MPM の最大の欠点はその安定性で、ある特定のスレッドが何らかの理由で 破壊されてしまうと、そのスレッドを管理していたプロセス全体が影響を受けて しまいます。最悪の場合、サーバクラッシュにもつながる可能性があります。特に Apache で Common Gateway Interface (CGI) を利用していて負荷が高くなると、 システム資源との通信が行なえなくなることで Internal Server Error が発生 してしまいます。また Worker MPM は、 Apache に添付されているモジュール の一部がスレッドセーフ (複数のスレッドから同時に呼び出されても安全に動作する こと) ではないため、それらは Worker MPM と同時に使用することができません。

[Warning]PHP を利用する場合の MPM について

PHP モジュールの一部はスレッドセーフではありません。 mod_php を使用する場合は、 Worker MPM を使用しない ことを強くお勧めします。

20.4.5. 外部モジュール

openSUSE に同梱されている全ての外部モジュールを下記に列挙しています。 各モジュールのドキュメンテーションについては、それぞれのディレクトリを ご覧ください。

mod-apparmor

mod_php5mod_perl などのモジュールで処理される Apache 内の各 CGI スクリプトに対し、 AppArmor の 制限を設定します。

パッケージ名: apache2-mod_apparmor
さらなる情報: パート 「AppArmor を利用した権利制限」 (↑セキュリティガイド)
mod_mono

mod_mono を利用すると、お使いのサーバ内で ASP.NET ページを実行することができるようになります。

パッケージ名: apache2-mod_mono
設定ファイル: /etc/apache2/conf.d/mod_mono.conf
mod_perl

mod_perl を利用すると、 Perl スクリプトを内蔵の インタプリタで実行することができるようになります。サーバ内でインタプリタが 恒久的に保持される形になるため、外部のインタプリタを起動する場合と比べて、 起動時のオーバーヘッドを小さくすることができます。

パッケージ名: apache2-mod_perl
設定ファイル: /etc/apache2/conf.d/mod_perl.conf
さらなる情報: /usr/share/doc/packages/apache2-mod_perl
mod_php5

PHP はサーバ内で動作するプラットフォーム非依存の HTML 内蔵型 スクリプト言語です。

パッケージ名: apache2-mod_php5
設定ファイル: /etc/apache2/conf.d/php5.conf
さらなる情報: /usr/share/doc/packages/apache2-mod_php5
mod_python

mod_python は Apache HTTP サーバ内に Python 機能を 内蔵させるためのもので、性能を相当に改善することができるほか、 Web ベースの アプリケーションを構築する際の柔軟性を追加することができます。

パッケージ名: apache2-mod_python
さらなる情報: /usr/share/doc/packages/apache2-mod_python
mod_tidy

mod_tidy は TidyLib を利用するモジュールで、 それぞれ発信される HTMLページを検証することができるものです。検証エラーが 発生すると、エラー一覧ページが表示されます。エラーにならなかった場合は 元の HTML ページが表示されます。

パッケージ名: apache2-mod_tidy
設定ファイル: /etc/apache2/mod_tidy.conf
さらなる情報: /usr/share/doc/packages/apache2-mod_tidy

20.4.6. コンパイル

Apache では知識のあるユーザがカスタムなモジュールを作成することで、その機能を 拡張することができます。 Apache のモジュールを開発したりサードパーティ製の モジュールをコンパイルしたりしたい場合は、開発ツールのほかに apache2-devel パッケージが必要となります。 apache2-devel パッケージには apxs2 と呼ばれるツールが含まれ、これを利用することで Apache 向けの追加モジュールを コンパイルできるようになっています。

apxs2 はソースコードからモジュールをコンパイルしたり インストールしたりすることができます (インストール作業では、設定ファイルに 対して行なう変更も同時に行なうことができます) 。これにより、 Apache の実行時に 読み込まれる 動的共有ライブラリ (DSO) を作成する ことができます。

apxs2 関連のバイナリは、 /usr/sbin 以下に配置されます:

  • /usr/sbin/apxs2—任意の MPM で動作する拡張 モジュールを構築するのに便利なツールです。インストールを行なう際、 インストール先は /usr/lib/apache2 になっています。

  • /usr/sbin/apxs2-prefork—prefork MPM 用のモジュールを構築するのに便利なツールです。インストールを行なう際、 インストール先は /usr/lib/apache2-prefork に なっています。

  • /usr/sbin/apxs2-worker—worker MPM 用のモジュールを構築するのに便利なツールです。インストールを行なう際、 インストール先は /usr/lib/apache2-worker に なっています。

ソースコードからモジュールをコンパイルし、インストールしたあとに有効に 設定するには、下記のように入力します:

cd /ソースコードのパス; apxs2 -cia
    mod_foo.c

ここで、 -c オプションはモジュールのコンパイルを、 -i オプションはモジュールのインストールを、 -a オプションはモジュールの有効化をそれぞれ指定して います。 apxs2 に対するその他のオプションは、 apxs2(1) のマニュアルページ内に記述されています。

20.5. CGI スクリプトを動作させる方法

Apache が用意している汎用ゲートウエイインターフェイス (Common Gateway Interface; CGI) は、プログラムやスクリプトから動的なコンテンツを生成するための仕組みで、 CGI スクリプトなどとも呼ばれるものです。 CGI スクリプトでは、任意のプログラミング 言語を使用することができます。通常はスクリプト言語として、 Perl や PHP などを 使用します。

Apache に対して CGI スクリプトの実行と動的コンテンツの生成を許可するには、 mod_cgi モジュールと mod_alias モジュールを有効に設定する必要があります。両方とも既定では有効に設定されるモジュールです。 モジュールの有効化について、詳しくは 20.4.2項 「有効化と無効化」 をお読みください。

[Warning]CGI セキュリティ

サーバに対して CGI スクリプトの実行を許可すると、それは潜在的なセキュリティ ホールになる場合があります。詳しくは 20.7項 「セキュリティ問題の回避」 をお読みください。

20.5.1. Apache の設定

openSUSE では、 CGI スクリプトの実行は /srv/www/cgi-bin/ ディレクトリ内でのみ許可されるように なっています。このディレクトリは CGI スクリプトを実行するために設定済みの ディレクトリですが、既に仮想ホストの設定を行なっている場合 (20.2.2.1項 「仮想 (バーチャル) ホストの設定」 を参照) で、 仮想ホスト別のディレクトリに CGI スクリプトを配置したい場合は、 ディレクトリを設定し、禁止を解除しなければなりません。

例20.5 仮想ホストでの CGI 設定

ScriptAlias /cgi-bin/ "/srv/www/www.example.com/cgi-bin/"1

<Directory "/srv/www/www.example.com/cgi-bin/">
 Options +ExecCGI2
 AddHandler cgi-script .cgi .pl3
 Order allow,deny4
 Allow from all
</Directory>

1

このように設定することで、上記のディレクトリ内にある各ファイルを CGI と見なし、実行するようになります。

2

CGI スクリプトの実行を有効に設定します。

3

.pl と .cgi の拡張子をもつファイルに対し、 CGI スクリプトとして実行する ように指定しています。この行は必要に応じて変更してください。

4

OrderAllow の各ディレクティブは既定のアクセス制御を設定し、 Allow と Deny のどちらを 先に解釈するのかを指定します。この設定の場合、 deny ディレクティブが allow ディレクティブよりも先に解釈され、 既定でアクセスは許可されるようになります。


20.5.2. サンプルスクリプトの実行

CGI のプログラミングは 通常の プログラミングとは異なり、 Content-type: text/html のような MIME 種類のヘッダを 出力しなければなりません。このヘッダはクライアントに送信され、クライアント 側で解釈されます。また、 CGI スクリプトの出力はクライアント (一般に Web ブラウザ) が解釈可能な形式でなければなりません。多くの場合は HTML やテキスト 形式ですが、たとえば画像などでもかまいません。

Apache のパッケージには、シンプルなテスト用スクリプト /usr/share/doc/packages/apache2/test-cgi が含まれて います。これはいくつかの環境変数をテキスト形式で出力するものです。このファイルは /srv/www/cgi-bin/ ディレクトリにコピーするか、もしくは お使いの仮想ホスト内のスクリプトディレクトリ (/srv/www/www.example.com/cgi-bin/) にコピーし、 test.cgi のようなファイル名を設定してください。

また、 Web サーバがアクセスするファイルは、 root ユーザに所有権がある ファイルであるべきものです。詳しい情報は 20.7項 「セキュリティ問題の回避」 をお読みください。 Web サーバは root とは異なるユーザで動作する ことから、 CGI スクリプトは全てのユーザに対して実行と読み込みを許可しなければ なりません。 CGI のディレクトリに移動して chmod 755 test.cgi コマンドを実行すると、必要なパーミッションを設定することができます。

全ての設定が完了したら、 http://localhost/cgi-bin/test.cgi にアクセスするか、もしくは http://www.example.com/cgi-bin/test.cgi にアクセスしてください。アクセスすると CGI/1.0 test script report のような表示が現われるはずです。

20.5.3. CGI のトラブルシューティング

テストプログラムの出力が現われず、エラーメッセージが表示された場合は、下記の 項目を確認してください:

CGI トラブルシューティング

  • 設定を変更したあと、再起動を行ないましたか? rcapache2 probe を実行して確認してください。

  • カスタムな CGI ディレクトリを設定している場合、それらを正しく設定して ありますか? 不確かな場合は、テスト用のスクリプトを既定の CGI ディレクトリ /srv/www/cgi-bin/ にコピーし、ブラウザで http://localhost/cgi-bin/test.cgi を開いてみてください。

  • ファイルのパーミッションは正しく設定されていますか? CGI をコピーした ディレクトリに移動し、 ls -l test.cgi を実行して ください。パーミッションは、下記のように表示されなければなりません:

    -rwxr-xr-x  1 root root
  • スクリプトにプログラムエラーが存在しないことを確認してください。 test.cgi をコピーしただけで変更を行なっていない場合は 起こりませんが、独自のプログラムを作成したり修正したりした場合は、プログラム エラーが無いかどうかを確認してください。

20.6. SSL で通信の機密を保持する Web サーバの設定

クレジットカード情報などの機密データは、 Web サーバとクライアントの間で機密を 保持する目的で暗号化を行ない、認証を設定しておくことが望まれます。 mod_ssl では、 Secure Sockets Layer (SSL) や Transport Layer Security (TLS) プロトコルを利用し、 Web サーバとクライアント間の HTTP 通信に 強い暗号化を提供します。 SSL や TLS を利用することで、 Web サーバとクライアントの 間で秘密の通信を確立することができます。データの整合性についても確認が行なわれるほか、 サーバとクライアントの間で相互の認証を行なうことができます。

この暗号化通信を成立させるため、サーバは URL を受け付ける前に、自分自身の正当性 を証明する SSL 証明書を送信します。これによりクライアントは、サーバが偽装された ものではなく、通信を開始してよいものかどうかを確認することができます。また証明書は、 機密データを危険にさらすリスクを負うことのないように、サーバとクライアントの間で 情報をやりとりするための、暗号化接続を生成する機能を備えています。

mod_ssl 自身では SSL/TSL プロトコルを実装することは しておらず、 Apache と SSL ライブラリの間のインターフェイスとして動作する仕組みに なっています。 openSUSE では、 OpenSSL ライブラリを利用しています。 Apache をインストールすると、 OpenSSL も自動でインストールされます。

Apache で mod_ssl を利用した場合、 URL が http:// ではなく https:// になるという 点が最もよくわかる違いです。

[Tip]証明書のサンプル

apache2-example-certificates パッケージをインストールすると、疑似企業 Snake Oil 用の 証明書が利用できるようになります。

20.6.1. SSL 証明書の作成

Web サーバで SSL/TLS を使用するためには、 SSL の証明書を作成する必要があります。 この証明書は Web サーバとクライアントの間で認証を行なうために必要なもので、 個人や企業同士で相互に所在確認を行なうことができます。証明書の正当性を確かな ものにするには、多くのユーザが信頼する企業や団体によって電子署名されたもので なければなりません。

作成可能な証明書としては、下記の 3 種類があります。テスト用の ダミー 証明書, 公的な信頼を必要としない特定のユーザ範囲で利用する自己署名証明書, 独立した公的認証機関 (CA) が電子署名する証明書の 3 種類です。

証明書の作成は、基本的に 2 段階の作業で行ないます。 1 つめは認証機関向けの 機密鍵作成、 2 つめはその鍵を利用したサーバ証明書への署名です。

[Tip]さらなる情報

SSL/TSL について、考え方や定義をより詳しく知るには、 http://httpd.apache.org/docs/2.2/ssl/ssl_intro.html をお読みください。

20.6.1.1. Dummy 証明書の作成

dummy 証明書の作成は簡単に行なうことができます。単純に /usr/bin/gensslcert スクリプトを実行するだけです。 これにより下記に示すファイルを生成するか、上書きします。 gensslcert に指定するパラメータを変えることで、 作成する証明書を細かく調整することができます。 詳しくは /usr/bin/gensslcert -h を実行して表示されるヘルプをお読みください。

  • /etc/apache2/ssl.crt/ca.crt

  • /etc/apache2/ssl.crt/server.crt

  • /etc/apache2/ssl.key/server.key

  • /etc/apache2/ssl.csr/server.csr

  • /root/.mkcert.cfg

ダウンロード用に ca.crt のコピーが /srv/www/htdocs/CA.crt に作成されます。

[Important]テスト目的にのみご利用ください

Dummy 証明書は本番環境では使用しないでください。テスト目的でのみ お使いください。

20.6.1.2. 自己署名証明書の作成

イントラネット内の機密 Web サーバを構築する場合や、特定のユーザに対する 機密 Web サーバを構築する場合は、ご自身で証明機関 (CA) を作成し、そこで 署名を行なえば十分です。

自己署名証明書を作成するには、対話処理で 9 段階の作業を行ないます。 まずは /usr/share/doc/packages/apache2 ディレクトリに 移動し、下記のコマンドを実行します: ./mkcert.sh make --no-print-directory /usr/bin/openssl /usr/sbin/ custom なお、このコマンドは上記のディレクトリ以外からは実行しないでください。 このプログラムは複数の問い合わせを表示する仕組みで動作し、それぞれに答えていく ことによって証明書を作成します。

手順20.4 mkcert.sh を利用した自己署名証明書の作成

  1. Decide the signature algorithm used for certificates

    古いブラウザでは DSA を利用したときに問題が発生する可能性があるため、 RSA を選択 (R, 既定値) してください。

  2. Generating RSA private key for CA (1024 bit)

    特に何も操作する必要はありません。

  3. Generating X.509 certificate signing request for CA

    ここから証明機関の識別名を作成します。それぞれ国名や団体名など、いくつかの 項目に回答します (訳注: スクリプトの仕様上、英語表記であることにご注意 ください) 。ここで入力するデータはそれぞれ証明書に記載されるため、正しい データを入力してください。また、全ての質問に対して何らかの入力を行なう必要 はなく、該当しないものや入力しないままにしておきたい場合は、 . を入力してください。 Common name (共通名) は証明機関 自身の名前を入力します。 My company CA など のように、わかりやすい名前を入力してください。

    [Important]証明機関の共通名について

    証明機関の共通名はサーバの共通名とは異なるものでなければなりません。 そのため、この段階では完全修飾ドメイン名は入力しないでください。

  4. Generating X.509 certificate for CA signed by itself

    証明書のバージョンを選択します。 3 (既定値) を選んで ください。

  5. Generating RSA private key for SERVER (1024 bit)

    特に何も操作する必要はありません。

  6. Generating X.509 certificate signing request for SERVER

    サーバ用の鍵を作成するための識別名を入力します。証明機関の識別名を入力した 場合とほとんど同じ質問内容で、それぞれ Web サーバに関する情報を入力して ください。なお、証明機関のデータと同じものである必要はありません (たとえば サーバが別の場所に存在する場合など) 。

    [Important]共通名の選択

    ここで入力する共通名は、サーバの完全修飾ドメイン名でなければなりません (たとえば www.example.com) 。そうでないとブラウザから Web サーバにアクセスした際、 証明書に記載されている共通名とサーバの完全修飾ドメイン名が異なるとして、 警告が発生してしまいます。

  7. Generating X.509 certificate signed by own CA

    証明書のバージョンを選択します。 3 (既定値) を選んで ください。

  8. Encrypting RSA private key of CA with a passphrase for security

    証明機関の機密鍵については、暗号化しておくことを強くお勧めします。 そのため、ここでは Y と回答してパスワードを入力してください。

  9. Encrypting RSA private key of SERVER with a passphrase for security

    サーバの鍵を暗号化すると、 Web サーバの起動時に毎回パスワードの入力を 求められるようになります。これはシステム起動時にサーバを自動で開始すること ができなくなるほか、 Web サーバの再起動にも手間がかかることになります。 そのため、一般的にこの質問に対しては N と回答してください。 ただしパスワードで暗号化しない場合、その鍵は自分自身を保護する術を持たない ことになるので、その鍵の利用を許すユーザだけがアクセスできることを確認して ください。

    [Important]サーバ鍵の暗号化

    サーバの暗号鍵をパスワードで保護した場合は、 /etc/sysconfig/apache2 ファイル内の APACHE_TIMEOUT 設定の値を増やしてください。 増やさない場合はパスワードを入力するための十分な時間が確保されず、 サーバが意図せず停止してしまう可能性があります。

スクリプトでの入力が完了すると、生成された証明書と鍵の一覧が表示されます。 スクリプトの出力とは異なり、ファイルはローカルディレクトリである conf ではなく、 /etc/apache2/ ディレクトリに作成されます。

最後にやるべきことは、証明機関の証明書ファイルを /etc/apache2/ssl.crt/ca.crt からご利用のユーザが アクセスできる場所にコピーし、各ブラウザに信頼のおける証明機関として登録して もらうことです。各ブラウザで登録を行なわないと、ブラウザからアクセスを行なった 際に、未知の発信元として警告が表示されてしまいます。なお、証明書は 1 年間 有効です。

[Important]自己署名証明書

自己署名証明書は、その証明書を信頼してもらうことのできる特定のユーザだけが アクセスする Web サーバを構築する際にのみ、お使いください。たとえば一般的な 店舗などのような、不特定多数がアクセスするサーバには不適切です。

20.6.1.3. 公式に署名された証明書の取得

お使いの証明書に対して署名を行なうことのできる、公的な証明機関がいくつか 存在しています。証明書は信頼のできる第三者によって署名されるため、それらの 証明書を完全に信頼できるようになります。不特定多数がアクセスし、機密を保持 する Web サーバでは、一般に公的な署名のある証明書を利用します。

最もよく知られた証明機関としては、 Thawte (http://www.thawte.com/) や Verisign (http://www.verisign.com) などがあります。これらを含む 公的な証明機関はあらかじめ全てのブラウザに登録されているため、これらの 証明機関が署名した証明書は、ブラウザ側で自動的に受け付けられます。

公的に署名された証明書を取得する場合は、その証明書そのものを証明機関に送付 する必要はありません。その代わりに、証明書署名要求 (CSR) を送信します。 CSR を作成するには、 /usr/share/ssl/misc/CA.sh -newreq コマンドを実行してください。

まず上記のスクリプトは、 CSR を暗号化する際のパスワードを尋ねます。 そのあと識別名の入力を行ないます。それぞれ国名や団体名など、いくつかの 項目に回答します (訳注: スクリプトの仕様上、英語表記であることにご注意 ください) 。ここで入力するデータはそれぞれ証明書に記載されるため、正しい データを入力してください。また、全ての質問に対して何らかの入力を行なう必要 はなく、該当しないものや入力しないままにしておきたい場合は、 . を入力してください。 Common name (共通名) は証明機関 自身の名前を入力します。 My company CA など のように、わかりやすい名前を入力してください。最後にチャレンジパスワードと 呼ばれるパスワードの入力と、代替の企業名をそれぞれ入力します。

作成された CSR は、スクリプトを実行したときのディレクトリ内に配置されます。 ファイル名は newreq.pem になっています。

20.6.2. SSL を利用する Apache の設定

Web サーバで SSL と TLS を利用する場合、既定のサーバ側のポートは 443 です。 通常の 設定を Apache に行なっていれば、ポート 80 での http とポート 443 での SSL/TLS (https) という形になるため、特に矛盾が発生すること はありません。実際、単一の Apache が起動している状態で、 HTTP と HTTPS の 両方に対応することができます。通常はそれぞれポート 80 とポート 443 で別々の 仮想ホストを設定し、サービスを提供します。

[Important]ファイアウオール設定

Apache で SSL をポート 443 で有効化する場合、ファイアウオールを開くことも 忘れずに実施してください。これは 項 「YaST を利用したファイアウオールの設定」 (第14章 マスカレードとファイアウオール, ↑セキュリティガイド) に書かれている手順で YaST から設定することができます。

サーバ全体の設定として、 SSL モジュールは既定で有効化されています。お使いの 仮想ホストで無効化している場合は、 a2enmod ssl コマンドで 有効化することができます。最終的に SSL を有効にするには、サーバを起動する際に SSL フラグを付けて起動する必要があります。これを行なうには、 a2enflag SSL を実行してください。このとき、サーバの証明書 をパスワードで暗号化するようにしている場合は、 /etc/sysconfig/apache2 ファイル内の APACHE_TIMEOUT の値を増やしておく必要があります。 これで Apache を起動する際にパスワード入力を行なうのに十分な時間を稼ぐことが できます。この変更を行なう場合は、サーバを再起動してください。再読み込みでは 不十分です。

なお、仮想ホストのディレクトリ内のファイル /etc/apache2/vhosts.d/vhost-ssl.template では、 SSL 固有のディレクティブについて詳しい説明が書かれています。 一般的な仮想ホストの設定については、 20.2.2.1項 「仮想 (バーチャル) ホストの設定」 をお読みください。

仮想ホストの設定を始めるには、上記のテンプレートを /etc/apache2/vhosts.d/mySSL-host.conf ファイルなどにコピーしてから編集してください。それぞれ下記のディレクティブを 調整してください:

  • DocumentRoot

  • ServerName

  • ServerAdmin

  • ErrorLog

  • TransferLog

20.6.2.1. 名前ベースの仮想ホストと SSL

1 つの IP アドレスしか設定されていないサーバでは、 SSL 対応の仮想ホストを 複数作成することはできません。 SSL 対応の仮想ホストを複数設定した場合に ユーザから接続を行なうと、証明書には 1 つのサーバ名しか記述できないため、 いずれか 1 つの仮想ホストを除き、証明書のサーバ名と実際のサーバ名とが異なる として、アクセスのたびに警告が表示されてしまいます。

openSUSE では Server Name Indication (SNI) と呼ばれる SSL 拡張に対応 していて、 SSL のネゴシエーション内でドメイン名を送信することで、この問題を 解決することができます。これにより、早い段階で正しい仮想ホストに 切り替える ことができるため、ブラウザに対して正しい証明書を 配信できるようになります。

SNI は openSUSE では既定で有効に設定されています。 SSL に対して名前 ベースの仮想ホストを有効にするには、 20.2.2.1.1項 「名前ベースの仮想ホスト」 の手順に従って設定してください (ただし SSL の場合、ポート番号は 80 ではなく 443 であることに注意して ください) 。

[Important]SNI のブラウザ側対応

SNI はクライアント側でも対応する必要があります。 SNI は多くのブラウザで 動作しますが、モバイル端末のブラウザや Windows* XP 上で動作する Internet Explorer や Safari の場合、 SNI に対応していません。詳しくは http://en.wikipedia.org/wiki/Server_Name_Indication (英語) をお読みください。

また、サーバ側での SNI 非対応のブラウザにおける動作は、 SSLStrictSNIVHostCheck ディレクティブで設定を 行なうことができます。サーバ全体の設定で on にする と、 SNI 非対応のブラウザはすべての仮想ホストで拒否されるようになります。 VirtualHost ディレクティブ内で on に設定すると、指定した仮想ホストのみ SNI 非対応 ブラウザのアクセスを拒否します。

サーバ全体の設定で off にすると、サーバは SNI に対応 していない場合と同様に動作します。つまり SSL の要求は、すべて 最初に 設定した仮想ホスト (ポート 443) で処理 されます。

20.7. セキュリティ問題の回避

公的なインターネットに晒された Web サーバは、継続的な管理を行なう必要があります。 セキュリティの問題が発生することは避けられない問題で、ソフトウエアに関連した問題 だけでなく、不用意な設定ミスが発生する場合もあります。ここでは、このような問題に ついて、どのように取り扱うべきかを示しています。

20.7.1. 最新のソフトウエア

Apache ソフトウエアに脆弱性が発生された場合は、 SUSE からセキュリティ アドバイザリ (助言/忠告の意味) が発信されます。このアドバイザリには、その 脆弱性を修正するための手順が含まれていて、できるかぎり素早い適用を行なう必要があります。 SUSE のセキュリティアドバイザリは、下記の方法で受け取ることができます (訳注: 全て英語によるものです):

20.7.2. DocumentRoot のパーミッション

openSUSE の既定では、 DocumentRoot の ディレクトリ /srv/www/htdocs と CGI のディレクトリ /srv/www/cgi-bin はそれぞれユーザとグループが root に設定されています。これらのパーミッション 設定は変更すべきではありません。ディレクトリが書き込み可能であったりすると、 任意のユーザからファイルを配置できるようになってしまいます。これらのファイルは Apache から wwwrun の権限下で実行され、ファイル システムの資源に対して望まないアクセスを発生させる結果になってしまいます。 仮想ホストの DocumentRoot と CGI の配置先としては /srv/www のサブディレクトリを使用するものとし、 それらのファイルやディレクトリが root ユーザおよびグループに属しているように設定してください。

20.7.3. ファイルシステムのアクセス

既定ではファイルシステム全体へのアクセスが禁止されるよう、 /etc/apache2/httpd.conf に設定が為されています。 これらのディレクティブを変更するのではなく、 Apache から全てのディレクトリに アクセスし、必要なファイルを読み込むことができるように設定を追加してください。詳しくは 20.2.2.1.3項 「基本的な仮想ホスト設定」 をお読みください。これを行なうことで、たとえばパスワードやシステムの設定ファイル など、不必要なファイルへのアクセスを禁止し、外部から読み取られないようにすることが できます。

20.7.4. CGI スクリプト

Perl, PHP, SSI やその他のプログラミング言語で対話的に動作するスクリプトは、 結果的に任意のコマンドを実行できてしまい、広い範囲のセキュリティ問題につながります。 また、サーバから実行されるスクリプトは、サーバ管理者が信頼する発信元から公開された ソースコードを利用してインストールしなければなりません。ユーザに対して独自の スクリプトを実行させてしまうことは、一般に良い方法ではありません。全てのスクリプトに 対し、セキュリティ監査を実施しておくことをお薦めします。

スクリプトの管理をできる限り簡単にするため、システム全体で CGI の実行を許可したり することをせず、専用のディレクトリ内でのみ実行できるようにするのが一般的です。 それぞれ ScriptAliasOption ExecCGI のディレクティブを設定してください。 openSUSE の既定の設定では、任意の場所 からの CGI 実行は許可しない設定になっています。

全ての CGI スクリプトは同じユーザで動作するため、異なるスクリプト同士が互いに 衝突してしまう場合もあります。このような場合は suEXEC を利用し、それぞれ異なる ユーザやグループで CGI を実行するように設定してください。

20.7.5. ユーザディレクトリ

ユーザディレクトリを許可する場合 (mod_userdir または mod_rewrite) は、.htaccess の 使用を禁止することを強くお勧めします。それは、このファイルがセキュリティの設定を 上書きできてしまうものであるためです。少なくとも AllowOverRide を利用して、ユーザ側で設定できることを制限してください。 openSUSE では .htaccess が既定で有効に設定されていますが、 mod_userdir を利用した場合、ユーザに対しては Option ディレクティブでの上書きは行なえないように なっています (詳しくは設定ファイル /etc/apache2/mod_userdir.conf をお読みください) 。

20.8. トラブルシューティング

Apache がうまく起動しない場合や Web ページにアクセスできない場合、もしくは ユーザが Web サーバに接続できない場合は、問題の原因を探ることが重要です。 ここではよくエラーが発生する場所や、確認しておくべき場所を示します:

rcapache2 の出力

Web サーバの起動や停止を行なう場合、 /usr/sbin/httpd2 のバイナリではなく rcapache2 スクリプトをお使いください (詳しくは 20.3項 「Apache の起動と停止」 をお読みください) 。 このスクリプトではより詳しい出力を行なうようになっているため、設定エラーの 問題を解決する糸口を見つけやすくなります。

ログファイルとログの詳しさ

致命的なエラーであれそれ以外のエラーであれ、原因を探るには Apache のログ ファイルを利用するのがよいでしょう。既定では /var/log/apache2/error_log に出力されるエラーログファイルが主に役立つことでしょう。また、ログファイル 内により詳しい出力を行ないたい場合は、 LogLevel ディレクティブを利用してログメッセージの詳しさを設定してください。

[Tip]単純なテスト

Apache のログメッセージを監視するには、 tail -F /var/log/apache2/ my_error_log コマンドを実行するのが よいでしょう。これで監視している状態から、 rcapache2 restart を実行し、ブラウザで接続するとログの出力を確認することができます。

ファイアウオールとポート

一般的に良くある間違いとしては、 Apache 向けのポートをファイアウオール設定で 開いていない場合があります。 YaST で Apache を設定した場合、この問題に対応する ための個別オプションが提供されています (20.2.3項 「YaST を利用した Apache の設定」 をお読みください) 。 Apache を手作業で設定している場合、 HTTP や HTTPS の ポートを開くには、 YaST のファイアウオールモジュールをご利用ください。

上記のようなやり方を行なっても原因がよくわからない場合は、オンラインの Apache バグデータベース (http://httpd.apache.org/bug_report.html) (英語のみ) をご覧ください。また、 Apache のメーリングリストを利用してユーザコミュニティに 質問することもできます (詳しくは http://httpd.apache.org/userslist.html (英語) をお読みください) 。それ以外にも、ニュースグループを利用することもできます (comp.infosystems.www.servers.unix) (英語)。

20.9. さらなる情報

apache2-doc パッケージでは、ローカルにインストールされる 各国語対応の Apache マニュアルやリファレンスが提供されています。このパッケージは 既定でインストールされませんので、最も手っ取り早くインストールしたい場合は zypper in apache2-doc コマンドでインストールを行なってください。 インストールを行なったら、 Apache のマニュアルが ulink url="http://localhost/manual/"/> からアクセスできるようになります。また、同マニュアルのオンライン版もご利用いただけます (http://httpd.apache.org/docs-2.2/) 。 SUSE 固有の設定ヒントなどは、 /usr/share/doc/packages/apache2/README.* ディレクトリにあります。

20.9.1. Apache 2.2

Apache 2.2 での新機能の一覧については、 http://httpd.apache.org/docs/2.2/new_features_2_2.html をお読み ください。また、バージョン 2.0 から 2.2 にアップグレードする際の情報は、 http://httpd.apache.org/docs-2.2/upgrading.html をお読みください。

20.9.2. Apache モジュール

20.4.5項 「外部モジュール」 に概要が書かれている Apache の外部 モジュールについて、詳しい情報はそれぞれ下記の場所にあります:

20.9.3. 開発

Apache のモジュールを開発したり、 Apache の Web サーバプロジェクトに参加したり するための情報については、それぞれ下記の URL をご覧ください (いずれも英語が主体です):

Apache 開発者情報

http://httpd.apache.org/dev/

Apache 開発者ドキュメンテーション

http://httpd.apache.org/docs/2.2/developer/

Perl と C を利用した Apache モジュールの書き方

http://www.modperl.com/

20.9.4. その他の情報源

openSUSE での Apache 固有の問題に直面した場合は、まず http://ja.opensuse.org/Apache (日本語) または http://old-en.opensuse.org/Apache (英語) にある openSUSE wiki をお読みください。 また、 Apache の履歴は http://httpd.apache.org/ABOUT_APACHE.html にあります。 このページでは、 Apache が何故 Apache と呼ばれるようになったのかについても 記述しています。


openSUSE リファレンス 13.1