kazmax - Linux で自宅サーバー

apache2.2 バーチャルホストの設定 後編

前編のapache2.2 バーチャルホストの設定 前編では、バーチャルホストの概要と、設定の手順、設定ファイルごとの変更点について説明しました。

後編では、実際の設定内容について細かく(?)説明していきます。

Last Update : 2006年09月27日

apache2.2 バーチャルホストの設定 後編

  1. httpd.conf でバーチャルホスト設定ファイルを読み込む設定
  2. httpd-vhosts.conf でバーチャルホストを設定
  3. Directoryディレクティブを設定
  4. バーチャルホスト設定の確認
  5. apache を再起動
  6. 複数のバーチャルホストを設定するには

1. httpd.conf でバーチャルホスト設定ファイルを読み込む設定

以下のファイルが、apache の動作を決める設定ファイルとなります。

  • /etc/local/apache2/conf/httpd.conf

rpm とかでインストールしていると他の場所にあると思います。( /etc/httpd/conf/httpd.conf かな?)

apache2.2 のバーチャルホストの設定の場合、httpd.confでの設定は1箇所だけです。

# vi /usr/local/apache2/conf/httpd.conf


# Virtual hosts
# Include conf/extra/httpd-vhosts.conf
↓ 「 # 」を削除
# Virtual hosts
Include conf/extra/httpd-vhosts.conf

「 # 」をはずす事によって、apache 起動時に「conf/extra/httpd-vhosts.conf」ファイルを読み込むようになります。

2. httpd-vhosts.conf でバーチャルホストを設定

「1.」の設定によって、apache が起動する時に、「conf/extra/httpd-vhosts.conf」を読み込む様になりました。
もちろんバーチャルホストの設定は、このファイルになります。フルパスで書くと以下のファイルとなります。

  • /usr/local/apache2/conf/extra/httpd-vhosts.conf

2-1. NameVirtualHost を設定

/usr/local/apache2/conf/extra/httpd-vhosts.conf の中に以下の記述があります。

# vi /usr/local/apache2/conf/extra/httpd-vhosts.conf


# Use name-based virtual hosting.
#
NameVirtualHost *:80← このまま!

「名前ベース」のバーチャルホストを使用する場合はこのNameVirtualHostディレクティブを有効にします。

また、「 * 」の部分にはIPを、「 : 」の後ろには使用するポートを指定します。 この場合は、「 * 」が「このサーバの全ての IP アドレスに」の意味で、「:80」が「80番ポートを使用する」の意味となります。

2-2. VirtualHost を設定

次に、「 VirtualHost 」ディレクティブを指定します。

バーチャルホストに対して適用させたいディレクティブはこの中に記述します。

サーバが、指定されたバーチャルホストにあるドキュメントへリクエストを受け付けた場合、 ここに記述したディレクティブが適用されます。

<VirtualHost *:80>
・・・
</VirtualHost>

「 * 」にはIPを、「 : 」の後ろには使用するポートを指定します。
「 * 」は「このサーバの全ての IP アドレス」の意味。
「:80」は「80番ポートを使用する」の意味。
sslのサイトにしたいなら、「:443」と指定します。

2-3. DocumentRoot を設定

ここからは、VirtualHost ディレクティブの中に適用したいディレクティブを記述していきます。

<VirtualHost *:80>
    DocumentRoot /home/test_html
</VirtualHost>

DocumentRoot の後ろで、このバーチャルホストのドキュメントルートまでのパスを指定します。 apache が制御できるディレクトリを指定しなければなりませんが、基本的に自分が好きなところでいいです。

上記の例では、/home/test_html にしてます。

2-4. ServerName を設定

次に、ServerName を指定します。何という名前でアクセスされたら表示させたいかを書きます。

http://kazmax.zpp.jp/ でアクセスされたら表示したいなら「kazmax.zpp.jp」を、
http://hogehoge.zpp.jp/ でアクセスされたらの場合なら、「hogehoge.zpp.jp」を指定します。

<VirtualHost *:80>
    DocumentRoot /home/test_html
    ServerName kazmax.zpp.jp
</VirtualHost>

2-5. ErrorLog, CustomLogを設定

次に、ログの名前を指定します。自分がわかるようならなんて名前でもいいです。

<VirtualHost *:80>
    DocumentRoot /home/test_html
    ServerName kazmax.zpp.jp
    
    ErrorLog logs/kazmax.zpp.jp-error_log
    CustomLog logs/kazmax.zpp.jp-access_log common
</VirtualHost>

3. Directoryディレクティブを設定

次に、Directoryディレクティブの設定を行います。

これは、httpd.conf に書いてもいいし、httpd-vhosts.conf に書いてもOKです。

<VirtualHost *:80>
    DocumentRoot /home/test_html
    ServerName kazmax.zpp.jp

    ErrorLog logs/kazmax.zpp.jp-error_log
    CustomLog logs/kazmax.zpp.jp-access_log common

    <Directory "/home/test_html">
        Options FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

はじめの Directory の後ろに、DocumentRoot で指定したディレクトリを指定しましょう。
こうする事によって、指定したディレクトリが、apache の制御対象のディレクトリとなります。

以上で、バーチャルホストの設定の終了となります。

4. バーチャルホスト設定の確認

apache のコマンドで、設定した内容をたしかめる事ができます。

# /usr/local/apache2/bin/httpd -S ← 引数に-Sで確認用コマンドになります。
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                is a NameVirtualHost「1」
  default server kazmax.zpp.jp 
                    (/usr/local/apache2/conf/extra/httpd-vhosts.conf:30)「2」
  port 80 namevhost kazmax.zpp.jp 
                    (/usr/local/apache2/conf/extra/httpd-vhosts.conf:30)「3」
Syntax OK

Syntax OK とでれば設定内容があっています。間違っていると教えてくれます。

以下、出力内容の意味です。

  • 「1」:「このサーバ全てのIPの80番ポートに対して」
  • 「2」:「デフォルトのウェブサーバは kazmax.zpp.jp です。( httpd-vhosts.confの30行目に設定されてますよ)」

例えば、複数バーチャルホストが設定してある場合、 URLにIP直打ちとかでサーバにリクエストをかけたら、このデフォルトに指定してあるサイトを出力します。

  • 「3」:「 80番ポートで、kazmax.zpp.jp という名前のバーチャルホストがありますよ」

という意味です。

5. apache を再起動

やっと確認まで終了しました。 あとは、apache を再起動させ、設定を反映させたらバーチャルホストの完成です。

# /usr/local/apache2/bin/apachectl configtest ← 設定の確認
Syntax OK
# /usr/local/apache2/bin/apachectl graceful ← apache 再起動
 もしくは↓(どちらでも良い)  
# /usr/local/apache2/bin/apachectl restart

6. 複数のバーチャルホストを設定するには

複数のバーチャルホストを設定するには、以下の様にただ設定を追加させていくだけです。

NameVirtualHost *:80

<VirtualHost *:80>
        DocumentRoot /home/test_html
        ServerName kazmax.zpp.jp
        ・・・
</VirtualHost>

<VirtualHost *:80>
        DocumentRoot /home/test1_html
        ServerName test1.zpp.jp
        ・・・
</VirtualHost>

<VirtualHost *:80>
        DocumentRoot /home/test2_html
        ServerName test2.zpp.jp
        ・・・
</VirtualHost>
・・・
Apache 関連記事