UNIX的なアレ:gihyo.jp出張所

第11回知っておきたいApacheの基礎知識 その7

さて前回に引き続き、VirtualHostの説明をしていきたいと思います。VirtualHostに関する知識に自信が無い方は、簡単に前回の内容を復習してみてください。

それでは、IP VirtualとPort Virtualそれぞれについて説明をしていきたいと思います。

IPアドレスを調べる

それではIP Virtualの設定に入っていきたいと思いますが、その前にIPアドレスを調べておきましょう。Apacheをインストールしているサーバにログインをしてください。ifconfigというコマンドでIPアドレスを調べます。

$ /sbin/ifconfig 
 eth0      Link encap:Ethernet  HWaddr 00:FF:F7:1E:00:00
           inet addr:192.168.0.2  Bcast:192.168.0.255  Mask:255.255.255.0
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:148 errors:0 dropped:0 overruns:0 frame:0
           TX packets:85 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000
           RX bytes:13754 (13.4 KiB)  TX bytes:14565 (14.2 KiB)
           Interrupt:2

 lo        Link encap:Local Loopback
           inet addr:127.0.0.1  Mask:255.0.0.0
           UP LOOPBACK RUNNING  MTU:16436  Metric:1
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:0
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

さて上記の表に表示されたでしょうか?IPアドレスは利用されている環境によって異なるかと思います。上記の例では、192.168.0.2がIPアドレスです。調べることができたらどこかに控えておきましょう。

IP Virtualを設定する

それではIP Virtualの設定をしましょう。今回の設定はsampleに記載されていませんので、追記をしていくようにします。

まず、IP Virtualの設定をするには、指定したIPアドレスをListenさせる必要があります。上記で調べたIPアドレスをPort80番でListenをしてみましょう。sampleではすでに、56行目でListenしていますので、ここはコメントアウトしておいてください。

それでは、コメントアウトできたら下記の設定を追記してください。

# ListenするIPアドレス・Portを指定する
Listen 192.168.0.2:80
<VirtualHost 192.168.0.2:80>  # VirtualHostを設定するIPアドレス・Portを指定する
    DocumentRoot /usr/local/apache2/vhosts/www.example.com-ip/htdocs
    ErrorLog /usr/local/apache2/vhosts/www.example.com/logs/error_log
    CustomLog /usr/local/apache2/vhosts/www.example.com/logs/access_log common
</VirtualHost>

よく見てみると今までとDocumentRoot変わっていますね。それではDocumentRootと確認用のhtmlファイルをおいて再起動かけましょう。

$ sudo mkdir -p /usr/local/apache2/vhosts/www.example.com-ip/htdocs
$ echo "IP Virtual" | sudo tee /usr/local/apache2/vhosts/www.example.com-ip/htdocs/index.html
$ sudo /usr/local/apache2/bin/apachectl restart

再起動が完了したらブラウザから確認してください。

http://192.168.0.2/でアクセスしてIP Virtual と表示されれば成功です(IPアドレスは環境によって適宜変更してください⁠⁠。

Port Virtualを設定する

引き続き、Port Virtualの設定をしていきましょう。先ほどの設定に、以下の内容を追記してください。ListenしているIPアドレスは同じですが、Portが変わっていることに注意してください。こちらの例では81番PortをListenしています。

# ListenするIPアドレス・Portを指定する
Listen 192.168.0.2:81
<VirtualHost 192.168.0.2:81>  # VirtualHostを設定するIPアドレス・Portを指定する
    DocumentRoot /usr/local/apache2/vhosts/www.example.com-port/htdocs
    ErrorLog /usr/local/apache2/vhosts/www.example.com/logs/error_log
    CustomLog /usr/local/apache2/vhosts/www.example.com/logs/access_log common
</VirtualHost>

またこちらでも確認用にDocumentRootを変更して再起動をかけましょう。

$ sudo mkdir -p /usr/local/apache2/vhosts/www.example.com-port/htdocs
$ echo "port Virtual" | sudo tee /usr/local/apache2/vhosts/www.example.com-port/htdocs/index.html
$ sudo /usr/local/apache2/bin/apachectl restart

それではブラウザから確認しましょう。

http://192.168.0.2:81/でアクセスしてください。:81でPortを指定していますので忘れずに。Port Virtualと表示されれば成功です。

それではnetstatで81番PortがListenされていることを確認してみましょう。

$ netstat -an | grep -e :81.*LISTEN
tcp        0      0 192.168.0.2:81          0.0.0.0:*               LISTEN

さて、確認できましたね。もしうまくいかない場合はApacheの設定だけをみるのではなく、上記の方法を試してみてください。

VirtualHostのまとめ

さて2回にわたって、NameVirtual、IP Virtual、Port Virtualと3種類のVirtualHostの説明をしてきました。結果だけ見てみると同じように見えるのですが、それぞれApacheがアクセスを振り分けているポイントは異なります。最適なVirtualHostを見分けるためにも、その点をしっかりと押さえておくようにしましょう。

おすすめ記事

記事・ニュース一覧