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

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

この記事を読むのに必要な時間:およそ 2 分

さて前回に引き続き,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を見分けるためにも,その点をしっかりと押さえておくようにしましょう。

著者プロフィール

和田修一(わだしゅういち)

株式会社ロケットスタートCTO。PHPやPerlを中心としたアプリケーション開発から,Linuxなどの技術を中心としたインフラ系の設計・構築を担当。個人Blogは「Unix的なアレ」。

コメント

コメントの記入