27.2 Apacheの設定

SUSE Linux Enterprise ServerのApacheは、2つの異なる方法(YaSTの使用または手動)で設定できます。手動で設定を行えば細かい点まで調整できますが、YaSTのGUIほど便利ではありません。

重要: 設定の変更

Apacheの大部分の設定を変更した場合、Apacheを再起動または再ロードしないと変更が有効になりません。これは、YaSTで設定を完了し、[HTTP Service][有効にする]をオンにすると、自動的に行われます。手動での再起動については、セクション 27.3, Apacheの起動および停止を参照してください。ほとんどの設定の変更は、rcapache2 reloadを実行して再ロードすれば有効になります。

27.2.1 Apacheを手動で設定する

Apacheを手動で設定するには、rootユーザとしてプレーンテキストの設定ファイルを編集する必要があります。

環境設定ファイル

Apache設定ファイルは、次の2つの場所にあります。

  • /etc/sysconfig/apache2

  • /etc/apache2/

/etc/sysconfig/apache2

/etc/sysconfig/apache2は、ロードするモジュール、インクルードする付加的な設定ファイル、サーバを起動するときのフラグ、コマンドラインに追加するべきフラグなど、Apacheのいくつかのグローバル設定を制御します。このファイルの各設定オプションについては、詳細なドキュメントが存在するので、ここでは説明しません。一般的な目的のWebサーバの場合には、/etc/sysconfig/apache2の内容を設定するだけで十分でしょう。

/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アドレスおよびポートにバインドします。名前ベースの仮想ホスト(名前ベースの仮想ホストを参照してください)もこのファイルで設定されます。

magic

Apacheが自動的に不明なファイルのMIMEタイプを判別できるようにするmime_magicモジュール用のデータ。変更しません。

mime.types

システムで認識されるMIMEタイプ(実際には/etc/mime.typesへのリンク)。編集しません。このリスト以外にMIMEタイプを追加する必要がある場合は、mod_mime-defaults.confに追加します。

mod_*.conf

デフォルトでインストールされるモジュール用の設定ファイル。詳細については、セクション 27.4, モジュールのインストール、有効化および設定を参照してください。オプションのモジュール用の設定ファイルは、conf.dディレクトリ内にあります。

server-tuning.conf

各MPMの設定ディレクティブ(セクション 27.4.4, マルチプロセシングモジュールを参照)、およびApacheのパフォーマンスを制御する一般的な設定オプションが含まれています。このファイルを変更する場合は、Webサーバを適切にテストしてください。

ssl-global.conf and ssl.*

グローバルSSL設定およびSSL証明書データ。詳細については、セクション 27.6, SSLをサポートするセキュアWebサーバのセットアップを参照してください。

sysconfig.d/*.conf

/etc/sysconfig/apache2から自動的に生成される設定ファイル。これらのファイルは、いずれも変更しません。その代わりに、/etc/sysconfig/apache2を編集します。このディレクトリには、他の設定ファイルを配置しません。

uid.conf

Apacheを実行する際に使用するユーザおよびグループIDを指定します。変更しません。

vhosts.d/*.conf

仮想ホスト設定は、ここに含めます。このディレクトリには、SSLを持つ、持たないに関係なく、仮想ホストのテンプレートファイルが含まれます。このディレクトリ内の.confで終わるファイルは、すべて自動的にApache設定に含まれます。詳細については、仮想ホスト設定を参照してください。

仮想ホスト設定

仮想ホストという用語は、同じ物理マシンで複数のURI (universal resource identifiers)のサービスを行えるApacheの機能を指しています。これは、たとえばwww.example.comやwww.example.netのような複数のドメインが、1台の物理コンピュータ上で動作する単一のWebサーバで処理されていることを表します。

管理の手間(1つのWebサーバを維持すればよい)とハードウェアの費用(ドメインごとの専用のサーバを必要としない)を省くために仮想ホストを使うことは、よく行われています。仮想ホストは名前ベース、IPベース、またはポートベースのいずれかになります。

すべての既存仮想ホストをリストするには、コマンドhttpd2 -Sを使用します。デフォルトサーバおよびすべての仮想ホストが、それらのIPアドレスおよびリスニングポートとともに表示されます。リストには、各仮想ホストの設定ファイル内での位置を示すエントリも含まれています。

仮想ホストは、YaSTを使用するか(仮想ホストを参照)、または設定ファイルを手動で編集して設定できます。SUSE Linux Enterprise ServerのApacheは、デフォルトでは、/etc/apache2/vhosts.d/内の仮想ホストごとに1つの設定ファイルを使用するようになっています。このディレクトリ内で、拡張子が.confのファイルは、すべて自動的に設定に含まれます。仮想ホストの基本的なテンプレートはこのディレクトリ内に用意されています(vhost.template、またはSSLサポートのある仮想ホストの場合はvhost-ssl.template)。

ヒント: 常に仮想ホスト設定を作成する

Webサーバに1つのドメインしか存在しない場合でも、常に仮想ホスト設定ファイルを作成することをお勧めします。仮想ホスト設定ファイルを作成することで、1つのファイルにドメイン固有の設定を含めるのみでなく、仮想ホスト用の設定ファイルを移動、削除または名前変更することにより、常に使用中の基本設定にフォールバックできます。同じ理由で、仮想ホストごとに個別の設定ファイルも作成します。

<VirtualHost></VirtualHost>ブロックには、特定のドメインに適用される情報を記述します。Apacheは、クライアントから定義済みの仮想ホストへの要求を受け取ると、このセクションに記述されているディレクティブを使用します。仮想ホストでは、ほぼすべてのディレクティブを使用できます。Apacheの設定ディレクティブの詳細については、http://httpd.apache.org/docs/2.2/mod/quickreference.htmlを参照してください。

名前ベースの仮想ホスト

名前ベースの仮想ホストでは、1つのIPアドレスで複数のWebサイトを運用することができます。Apacheは、クライアントから送られたHTTPヘッダのホストフィールドを使用して、要求を、仮想ホスト宣言の1つの、一致するServerNameエントリに結び付けます。一致するServerNameが見つからない場合には、指定されている最初の仮想ホストがデフォルトとして用いられます。

NameVirtualHost仮想ディレクティブが、Apacheに、どのIPアドレス、そしてオプションとしてどのポートをリスンして、HTTPヘッダ内にドメイン名を含むクライアントからのリクエストを受け付けるかを指定します。このオプションは、/etc/apache2/listen.conf設定ファイルで設定されます。

最初の引数には完全修飾ドメイン名を指定することができますが、IPアドレスを使用することをお勧めします。2番目の引数はポートで、オプションです。デフォルトでは、ポート80が使用され、Listenディレクティブで設定されます。

ワイルドカード*は、IPアドレスとポート番号の両方で使用することができます。その場合、すべてのインタフェースでの要求を受け取ります。IPv6のアドレスは、角カッコの中に記述する必要があります。

例 27-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アドレスを使用する場合には、アドレスを角カッコの中に記述することが必要です。

例 27-2 名前ベースのVirtualHostディレクティブ

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

<VirtualHost 192.168.3.100>
  ...
</VirtualHost>

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

<VirtualHost *>
  ...
</VirtualHost>

<VirtualHost [2002:c0a8:364::]>
  ...
</VirtualHost>
IPベースの仮想ホスト

この仮想ホスト設定では、1つのコンピュータに対して複数のIPアドレスを設定する必要があります。Apacheの1つのインスタンスが、複数のドメインにホストとしてサービスを提供し、各ドメインに別のIPアドレスが割り当てられることになります。

物理サーバは、IPベースの仮想ホストごとに、1つのIPアドレスを持つ必要があります。マシンに複数のネットワークカードがない場合には、仮想ネットワークインタフェース(IPエイリアス)を使用することもできます。

次の例では、IP 192.168.3.100のマシンでApacheが実行されており、付加的なIP 192.168.3.101および192.168.3.102をホストしています。すべての仮想サーバについて、VirtualHostブロックが個別に必要です。

例 27-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)内のディレクティブが適用されます。

基本的な仮想ホスト設定

仮想ホストをセットアップするには、少なくとも次のディレクティブが各仮想ホスト設定に含まれている必要があります。オプションについては、「/etc/apache2/vhosts.d/vhost.template」を参照してください。

ServerName

ホストに割り当てられている完全修飾ドメイン名。

DocumentRoot

Apacheがこのホストにファイルをサービスする際に使用されるディレクトリパス。セキュリティ上の理由から、ファイルシステム全体へのアクセスはデフォルトで禁じられているため、Directoryコンテナ内でこのディレクトリを明示的にロック解除する必要があります。

ServerAdmin

サーバ管理者の電子メールアドレス。このアドレスは、Apacheが作成するエラーページなどに表示されます。

ErrorLog

この仮想ホストに関するエラーログファイル。仮想ホストごとに個別のエラーログファイルを作成する必要はありませんが、エラーのデバッグが簡単にできるため、よく行われています。/var/log/apache2/は、Apacheのログファイルの保管先となるデフォルトディレクトリです。

CustomLog

この仮想ホストに関するアクセスログファイル。仮想ホストごとに個別のアクセスログファイルを作成する必要はありませんが、ホストごとのアクセス統計を個別に分析できるため、よく行われています。/var/log/apache2/は、Apacheのログファイルの保管先となるデフォルトディレクトリです。

セキュリティ上の理由から、ファイルシステム全体へのアクセスはデフォルトで禁じられています。したがって、DocumentRootなど、Apacheによりサービスされるファイルを保管したディレクトリを明示的にロック解除する必要があります。

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

完全な設定ファイルは次のようになります。

例 27-4 基本的な仮想ホスト設定

<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>

27.2.2 ApacheをYaSTで設定する;

YaSTを使用してWebサーバを設定するには、YaSTを起動して、[ネットワークサービス] > [HTTPサーバ]の順に選択します。このモジュールを初めて起動すると、HTTP Server Wizardが起動して、サーバ管理に関していくつかの基本的な事項を決定するように要求されます。このウィザードの完了後、[HTTPサーバ]モジュールを呼び出すたびにHTTPサーバの設定のダイアログが起動します。

HTTP Server Wizard

HTTP Server Wizardには、5つのステップがあります。ダイアログの最後のステップでは、上級者用の設定モードに入って、さらに詳細な設定を行うかどうか選択できます。

Network Device Selection (ネットワークデバイスの選択)

ここでは、Apacheが着信リクエストをリスンするために使用する、ネットワークインタフェースとポートを指定します。既存のネットワークインタフェースとそれらに対応するIPアドレスから、任意のものを組み合わせて選択できます。他のサービスによって予約されていないものであれば、3つの範囲(ウェルノウンポート、レジスタードポート、ダイナミックまたはプライベートポート)のうちのどのポートでも使用できます。デフォルトの設定では、すべてのネットワークインタフェース(IPアドレス)のポート80をリッスンします。

ファイアウォールで、Webサーバがリスンするポートを開くには、[Open Firewall for Selected Ports]をオンにします。これは、LAN、WAN、または公共のインターネットなど、ネットワーク上でWebサーバを利用可能にする場合には必須です。外部からのWebサーバへのアクセスが不要なテスト段階でのみ、ポートを閉じておくことは有用です。複数のネットワークインタフェースが存在する場合は、[ファイアウォールの詳細]をクリックし、ポートを開くインタフェースを指定します。

Next] をクリックして設定を続けます。

モジュール

[モジュール]設定オプションによって、Webサーバでサポートされるスクリプト言語の有効化または無効化を設定できます。他のモジュールの有効化または無効化の詳細については、サーバモジュールを参照してください。[次へ]をクリックして次のダイアログに進みます。

Default Host (デフォルトのホスト)

このオプションは、デフォルトのWebサーバに関連しています。仮想ホスト設定で説明されているように、Apacheは、1つの物理的マシンで複数の仮想ホストに使用することができます。設定ファイルで最初に宣言された仮想ホストは通常、デフォルトのホストと呼ばれます。各仮想ホストは、デフォルトホストの設定を継承します。

ホストの設定(ディレクティブ)を編集するには、テーブル内の適切なエントリを選択して、[編集]をクリックします。新しいディレクティブを追加するには、[追加]をクリックします。ディレクティブを削除するには、そのアカウントを選択し、[削除]をクリックします。

図 27-1 HTTP Server Wizard:デフォルトホスト

これはサーバのデフォルト設定のリストです。

ドキュメントルート

Apacheがこのホストにファイルを送るときに使用されるディレクトリパス。/srv/www/htdocsはデフォルトの場所です。

別名

Aliasディレクティブを使えば、URLを物理的なファイルシステムの場所にマップすることができます。このことは、パスのURLエイリアスを行えば、ファイルシステムのDocument Rootの外にあるパスでもアクセスできることを意味しています。

デフォルトのSUSE Linux Enterprise Serverでは、Alias/icons/usr/share/apache2/iconsを指しています。ここには、ディレクトリのインデックス表示で使用されるApacheのアイコンがあります。

ScriptAlias

Aliasディレクティブと同様に、ScriptAliasディレクティブはURLをシステム内の場所にマップします。相違点は、ScriptAliasはターゲットディレクトリをCGIの場所として指定するということです。つまり、その場所にあるCGIスクリプトが実行されます。

ディレクトリ

ディレクトリ設定を使用して、指定したディレクトリにのみ適用される設定オプションのグループを含めることができます。

/usr/share/apache2/icons/srv/www/cgi-binディレクトリのアクセスおよび表示オプションをここで設定します。デフォルトを変更する必要はありません。

対象項目

インクルードにより、他の設定ファイルを指定できます。2つのインクルードディレクティブが設定済みです。/etc/apache2/conf.d/は外部モジュールに付属する設定ファイルを保持するディレクトリです。このディレクティブにより、このディレクトリ内の.confで終わるすべてのファイルが対象となります。もう1つのディレクティブでは、/etc/apache2/conf.d/apache2-manual.confというapache2-manual設定ファイルが対象となります。

サーバ名

クライアントがWebサーバとコンタクトするために使うデフォルトのURLを指定します。http://FQDN/にあるWebサーバへの接続用FQDN(完全修飾ドメイン名)か、またはそのIPアドレスを使用します。ここでは任意の名前は選択できません。サーバはこの名前で認識されなければなりません。

Server Administrator E-Mail

サーバ管理者の電子メールアドレス。このアドレスは、Apacheが作成するエラーページなどに表示されます。

デフォルトホスト]のステップを完了したら、[次へ]をクリックして、設定を続けます。

仮想ホスト

このステップでは、ウィザードはすでに設定されている仮想ホストのリストを表示します(仮想ホスト設定を参照)。YaST HTTPウィザードを起動する前に手動で変更を行っていなければ、仮想ホストは表示されません。

ホストを追加するには、[追加]をクリックし、サーバ名サーバのコンテンツルート(DocumentRoot)、管理者電子メールなどホストに関する基本情報を入力するためのダイアログを開きます。[サーバ解像度]は、ホストの識別方法を決めるために使用されます(名前ベースまたはIPベース)。[仮想ホストIDの変更]で名前またはIPアドレスを指定します。

次へ]をクリックして、仮想ホスト設定ダイアログの2番目の部分に進みます。

仮想ホスト設定のパート2では、CGIスクリプトを有効にするかどうか、およびこれらのスクリプトを使用するディレクトリを指定できます。また、SSLも有効にできます。SSLを有効化する場合は、証明書のパスも指定する必要があります。SSLおよび証明書の詳細については、セクション 27.6.2, SSLサポートのあるApacheの設定を参照してください。[ディレクトリインデックス]オプションを使用して、クライアントがディレクトリを要求するときに表示するファイルを指定できます(デフォルトではindex.html)。ファイルを変更する場合は、1つ以上のファイル名(スペースで区切る)を追加します。[公開HTMLを有効にする]で、ユーザのパブリックディレクトリ(~user/public_html/)のコンテンツが、サーバのhttp://www.example.com/~userからアクセスできるようにします。

重要: 仮想ホストの作成

仮想ホストを自由に追加することはできません。名前ベースの仮想ホストを使用する場合は、各ホスト名がネットワーク内で解決されている必要があります。IPベースの仮想ホストを使用する場合は、使用可能な各IPアドレスに対し1つのホストのみを割り当てることができます。

概要

これはウィザードの最後のステップです。ここでは、Apacheサーバをいつ、どのようにして起動するか(ブート時に起動するか、手動で起動するか)を指定します。また、ここまで行った設定の簡単な要約を確認します。この設定でよければ、[完了]をクリックして、設定を完了します。変更する場合は、希望のダイアログまで[戻る]をクリックして戻ります。[HTTPサーバのエキスパート環境設定]をクリックして、HTTPサーバの設定で説明しているダイアログを開きます。

図 27-2 HTTP Server Wizard:概要

HTTPサーバの設定

HTTPサーバの設定]ダイアログでは、ウィザード(Webサーバを最初に設定する場合にのみ実行)よりも詳細に設定を調整できます。このダイアログは、次で説明する4つのタブで構成されています。ここで変更する設定オプションは、すぐには適用されません。変更を適用するには、常に[完了]をクリックして変更を確認する必要があります。[中止]をクリックすると、設定モジュールを終了し、変更が破棄されます。

待ち受けポートおよびアドレス

HTTPサービス]で、Apacheを実行するか([有効にする])、または停止するか([無効])を選択します。[Listen on Ports]で、サーバが使用可能なアドレスおよびポートについて[追加]、[編集]、または[削除]を選択します。デフォルトでは、すべてのインタフェースがポート 80をリッスンします。[Open Firewall on Selected Ports]は常に選択します。このオプションを選択しない場合、外部からWebサーバに到達できなくなります。外部からのWebサーバへのアクセスが不要なテスト段階でのみ、ポートを閉じておくことは有用です。複数のネットワークインタフェースが存在する場合は、[ファイアウォールの詳細]をクリックし、ポートを開くインタフェースを指定します。

ログファイル]で、アクセスログまたはエラーログのいずれかを確認します。これは、設定をテストする場合に便利です。ログファイルが別のウィンドウ内に表示され、ここからWebサーバを再起動または再ロードすることもできます(詳細についてはセクション 27.3, Apacheの起動および停止を参照してください)。これらのコマンドは、すぐに適用されます。

図 27-3 HTTP Server Configuration:設定:リッスンポートとアドレス

サーバモジュール

状態の変更]をクリックして、Apache2モジュールのステータス(有効または無効)を変更できます。すでにインストールされているがリストに含まれていない新規モジュールを追加するには、[Add Module]をクリックします。モジュールの詳細については、セクション 27.4, モジュールのインストール、有効化および設定を参照してください。

図 27-4 HTTP Server Configuration:サーバモジュール

メインホストまたはホスト

これらのダイアログは、すでに説明したものと同じです。詳細については、Default Host (デフォルトのホスト)および仮想ホストを参照してください。