26.2 Apacheの設定

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

[Important]設定の変更

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

26.2.1 Apacheを手動で設定する

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

26.2.1.1 設定ファイル

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

  • /etc/sysconfig/apache2

  • /etc/apache2/

26.2.1.1.1 /etc/sysconfig/apache2

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

[Important]Apache用のSuSEconfigモジュールは存在しない

Apache用のSuSEconfigモジュールは、SUSE Linuxから削除されました。/etc/sysconfig/apache2を変更した後に、SuSEconfigを実行することはもはや必要ではありません。

26.2.1.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-global.conf
 |- ssl.*
 |- 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サーバ設定ファイル。このファイルは変更しません。この設定ファイルは、include文およびグローバル設定が含まれています。ここに記載されている各設定ファイルのグローバル設定を上書きします。仮想ホスト設定内のホスト固有の設定(ドキュメントルートなど)を変更します。

listen.conf

Apacheを特定のIPアドレスおよびポートにバインドします。名前ベースの仮想ホスト(26.2.1.2.1項 「名前ベースの仮想ホスト」を参照)もこのファイルで設定されます。

magic

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

mime.types

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

mod_*.conf

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

server-tuning.conf

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

ssl-global.conf and ssl.*

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

sysconfig.d/*.conf

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

uid.conf

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

vhosts.d/*.conf

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

26.2.1.2 仮想ホスト設定

仮想ホストという用語は、同じ物理マシンで複数のURI (universal resource identifiers)のサービスを行えるApacheの機能を指しています。これは、www.example.comとwww.example.netのような複数のドメインを、1台の物理マシン上の単一のWebサーバで保持できることを意味しています。

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

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

[Tip]常に仮想ホスト設定を作成する

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

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

26.2.1.2.1 名前ベースの仮想ホスト

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

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

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

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

例 26.1 名前ベースのVirtualHostエントリの応用例

# NameVirtualHost IP-address[:Port]
NameVirtualHost 192.168.1.100:80
NameVirtualHost 192.168.1.100
NameVirtualHost *:80
NameVirtualHost *
NameVirtualHost [2002:c0a8:164::]:80
      

VirtualHost開始タグには、名前ベースの仮想ホスト設定でNameVirtualHostを引数として使用して以前に宣言されたIPアドレス(または完全修飾ドメイン名)が採用されます。NameVirtualHostディレクティブで以前に宣言されたポート番号はオプションです。

ワイルドカード*をIPアドレスの代わりに使うこともできます。この構文は、ワイルドカードをNameVirtualHost *として組み合わせて使用する場合にのみ有効です。IPv6アドレスを使用する場合には、アドレスを角カッコの中に記述することが必要です。

例 26.2 名前ベースのVirtualHostディレクティブ

<VirtualHost 192.168.1.100:80>
  ...
</VirtualHost>

<VirtualHost 192.168.1.100>
  ...
</VirtualHost>

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

<VirtualHost *>
  ...
</VirtualHost>

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

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

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

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

例 26.3 IPベースのVirtualHostディレクティブ

<VirtualHost 192.168.0.20>
  ...
</VirtualHost>

<VirtualHost 192.168.0.30>
  ...
</VirtualHost>
      

ここでは、VirtualHostディレクティブは、192.168.0.10以外のインタフェースに対してのみ指定されています。Listenディレクティブが192.168.0.10に対しても設定される場合、このインタフェースへのHTTP要求に応答するために別のIPベースの仮想ホストを作成する必要があります。作成しない場合、デフォルトのサーバ設定(/etc/apache2/default-server.conf)内のディレクティブが適用されます。

26.2.1.2.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/example.com_htdocs">
  Order allow,deny
  Allow from all
</Directory>
     

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

例 26.4 基本的なVirtualHost設定

<VirtualHost 192.168.0.10>
  ServerName www.example.com
  DocumentRoot /srv/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/example.com">
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>
      

26.2.2 ApacheをYaSTで設定する

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

26.2.2.1 HTTP Server Wizard

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

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

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

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

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

26.2.2.1.2 モジュール

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

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

このオプションは、デフォルトのWebサーバに関連しています。26.2.1.2項 「仮想ホスト設定」で説明しているように、 Apacheでは、単一の物理マシンで複数の仮想ホストのサービスを行えます。設定ファイルで最初に宣言された仮想ホストは通常、デフォルトのホストと呼ばれます。各仮想ホストは、デフォルトホストの設定を継承します。

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

図 26.1 HTTP Server Wizard:Default Host (デフォルトのホスト)

HTTP Server Wizard:Default Host (デフォルトのホスト)

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

ドキュメントルート

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

Alias

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

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

ScriptAlias

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

Directory

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

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

Include

includeにより、他の設定ファイルを指定できます。/etc/apache2/conf.d/*.confは、外部モジュールに付属する設定ファイルを含むディレクトリです。デフォルトで、このディレクトリ内のすべてのファイル(*.conf)が含まれます。/etc/apache2/conf.d/apache2-manual?confは、すべてのapache2-manual設定ファイルを含むディレクトリです。

Server Name

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

Server Administrator E-Mail

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

Server Resolution

このオプションは、26.2.1.2項 「仮想ホスト設定」を参照してください。[Determine Request Server by HTTP Headers]を選択すると、VirtualHostは、そのサーバ名に対する要求に応答します(26.2.1.2.1項 「名前ベースの仮想ホスト」を参照)。[Determine Request Server by Server IP Address]を選択すると、Apacheは、クライアントが送信したHTTPヘッダ情報によって、要求に応答するホストを選択します。IPベースの仮想ホストについての詳細は、26.2.1.2.2項 「IPベースの仮想ホスト」を参照してください。

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

26.2.2.1.4 仮想ホスト

このステップでは、ウィザードはすでに設定されている仮想ホストのリストを表示します(26.2.1.2項 「仮想ホスト設定」を参照)。YaST HTTPウィザードを起動する前に手動で変更しなかった場合は、前のステップで設定されたデフォルトのホストと同じ仮想ホストのみが表示されます。デフォルトとして設定されています。

ホストを追加するには、[追加]をクリックしてダイアログを表示し、ホストについての基本的な情報を入力します。[サーバID]には、サーバ名、サーバのコンテンツのroot(DocumentRoot)、 管理者の電子メールアドレスが含まれます。[サーバ解像度]は、ホストの識別方法を決めるために用いられます(名前ベースまたはIPベース)。これらのオプションについては、26.2.2.1.3項 「Default Host (デフォルトのホスト)」で説明しています。

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

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

[Important]仮想ホストの作成

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

26.2.2.1.5 [サマリ]

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

図 26.2 HTTP Server Wizard:[サマリ]

HTTP Server Wizard:[サマリ]

26.2.2.2 HTTPサーバの設定

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

26.2.2.2.1 リスンポートおよびアドレス

[HTTPサービス]で、Apacheを実行するか([有効])、停止するか([無効])、いずれかを選択します。[Listen on Ports]で、サーバが使用可能なアドレスおよびポートについて[追加][編集]または[削除]を選択します。デフォルトは、すべてのインタフェース上でポート80をリスンします。Webサーバが外部からアクセスできるように、[選択したポート上でファイアウォールを開く]を常に選択します。外部からWebサーバにアクセスすることが不要なテスト段階でのみ、リスンするポートを閉じたままにしておくとよいでしょう。

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

図 26.3 HTTPサーバの設定:リスンポートおよびアドレス

HTTPサーバの設定:リスンポートおよびアドレス
26.2.2.2.2 サーバモジュール

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

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

HTTPサーバの設定:サーバモジュール
26.2.2.2.3 デフォルトのホスト

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