IPベースのバーチャルホスト(内部検証用)|CentOS

以前、スグラボ » xamppバーチャルホストを使ってみるでXAMPP環境でバーチャルホストを使って内部検証環境を構築してみましたが、今回はCentOSを使った通常のlinuxサーバーを構築した場合に低コストでバーチャルホスト(内部検証環境)を実現する方法をご紹介します。
ただし、コストと手間を省くためローカルIPで直接アクセスする方法にします。
慣れない方にはちと使いづらいかも。まさに現場用Tips。

バーチャルホストには二通り

バーチャルホストは大きく分けて2種類あります。
1.nameベース
2.IPベース
です。それぞれ長所と短所があるのですが、簡単にまとめると

nameベース

長所:IPアドレスは一つでOK
短所:ドメインが最低一つ必要。また、サーバー側の他に、グローバル公開する場合はDNSサーバー、内部検証用の場合はローカルのhostsファイルの編集が必要

IPベース

長所:必要なIPの数を用意できればサーバー側の設定だけでOK。ローカルIPのみの倍はゼロコスト。
短所:複数のIPが必要なのでグローバルIPの場合はコストがかさむ。1グローバル、複数ローカルのIPでグローバル公開するには手間が掛かる。

今回は一番簡単でお金の掛からないIPベースの内部検証用

今回は内部検証の環境としての構築なので、一番楽でコストも掛からないIPベースを採用。
ただし既出の通り、ドメインによるアクセスではなく、素のローカルIPでアクセスする方法になります。

材料

PC:1台
OS:CentOS
IP:固定のローカルIPを、作りたいバーチャルホスト分だけ用意します。今回は3つのバーチャルホストを以下のローカルIPで使うとして作業を進めます。
・192.168.0.10(OSインストール時に設定)
・192.168.0.20(後から追加するホストその1)
・192.168.0.30(後から追加するホストその2)

大まかな流れ

1.ネットワークの設定で、1枚のNIC(Network Interface Card いわゆるLANカード)に複数のIPを割り当てる
2.httpd.confの設定で、それぞれのIPでアクセスするルートディレクトリを指定する。
という流れになります。

1枚のNICに複数のローカルIPを当てる

1.通常通りCentOSをセットアップ

今回はCentOSのインストール及び初期設定は省略します。
内部検証としてローカルアクセスが可能になるところまで作業を進めます。

2.NICのチェック

NIC(Network Interface Card)、つまりLANが機能しているかチェック

#ifconfig eth0
eth0   Link encap:Ethernet HWaddr 00:27:36:F:24:A0
     inet addr:192.168.0.10 Bcast:192.168.0.255 Mask:255.255.255.0
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
     RX packets:156 errors:0 dropped:0 overruns:0 frame:0
     TX packets:187 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:1000
     RX bytes:12545 (1.2 MiB) TX bytes:11687 (1.1 MiB)
     Interrupt:225

のような感じ(数値は異なる)で表示が出ればOK。

追加したいホストの情報を追加する

上記で確認したNICの設定は
/etc/sysconfig/network-scripts/ifcfg-eth0
で行うことができる。(複数のNICを装着している場合は「ifcfg-eth1」、「ifcfg-eth2」…と設定ファイルも複数生成されます。)
今回はNICが一枚と想定しますのでifcfg-eth0で認識されるNICに複数のIPを当てていきます。
まず、
・上記で確認済みの
/etc/sysconfig/network-scripts/ifcfg-eth0
で設定されたホストeth0が1つ目のホスト(192.168.0.10)です。
・2つ目(192.168.0.20)は
/etc/sysconfig/network-scripts/ifcfg-eth0:0
3つ目(192.168.0.30)は
/etc/sysconfig/network-scripts/ifcfg-eth0:1
というファイルを新規追加することで設定を追加していきます。「:(コロン)」の後の数字が追加するホストの数(n)とは異なることに注意(n-2になる)してください。

ファイルの新規作成

#vi /etc/sysconfig/network-scripts/ifcfg-eth0:0
DEVICE=eth0:0←デバイス名をファイル名とそろえる
IPADDR=192.168.0.20←追加するローカルIP
NETMASK=255.255.255.0
ONBOOT=yes
TYPE=Ethernet

同様に

#vi /etc/sysconfig/network-scripts/ifcfg-eth0:1
DEVICE=eth0:1←デバイス名をファイル名とそろえる
IPADDR=192.168.0.30←追加するローカルIP
NETMASK=255.255.255.0
ONBOOT=yes
TYPE=Ethernet

でファイルの追加はOK。

ネットワークを再起動

上記で設定した内容をネットワークに反映させるために、一度ネットワークを再起動

# /etc/init.d/network restart
インターフェース eth0 を終了中:                            [  OK  ]
ループバックインターフェースを終了中                       [  OK  ]
ループバックインターフェイスを呼び込み中                   [  OK  ]
インターフェース eth0 を活性化中:                          [  OK  ]

となればOK。

NICに複数のローカルIPが当たってるか確認

最初のころにNICが

# ifconfig
eth0   Link encap:Ethernet HWaddr 00:27:36:F:24:A0
     inet addr:192.168.0.10 Bcast:192.168.0.255 Mask:255.255.255.0
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
     RX packets:156 errors:0 dropped:0 overruns:0 frame:0
     TX packets:187 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:1000
     RX bytes:12545 (1.2 MiB) TX bytes:11687 (1.1 MiB)
     Interrupt:225

eth0:0    Link encap:Ethernet  HWaddr 00:27:36:F:24:A0
          inet addr:192.168.0.20  Bcast:192.168.0.255 Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:225

eth0:1    Link encap:Ethernet  HWaddr 00:27:36:F:24:A0
          inet addr:192.168.0.30  Bcast:192.168.0.255 Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:225

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:560 (560.0 b)  TX bytes:560 (560.0 b)

こんな感じで、最初の時にも出てきたeth0の他にeth0:0とeth0:1の情報も出てくればOK。
これにて1枚のNICに複数IPを割り当てる作業は完了。
試しに設定した3種類のローカルIPでアクセスしてみてください。どれもApacheのページ(/var/www/html/index.html)にリンクすると思います。

それぞれのローカルIPでアクセスするルートディレクトリを設定する

さて、3つのローカルIPが機能するようになったので、次はそれぞれのIPがアクセスするルートディレクトリを設定します。これは
/etc/httpd/conf/httpd.conf
から設定していきます。

#vi /etc/httpd/conf/httpd.conf
#
# This is the main Apache server configuration file.  It contains the
# configuration directives that give the server its instructions.
…
略
…
一番下に追記
<virtualHost 192.168.0.20>
DocumentRoot /var/www/test01
</virtualHost>

<virtualHost 192.168.0.20>
DocumentRoot /var/www/test02
</virtualHost>

としましょう。
最後に設定を反映させるためにhttpdを再起動

# /etc/rc.d/init.d/httpd restart

VirtualHostディレクティブにServerNameが無いことに起因するエラーメッセージが出ますが、機能的には問題ありません。気になる人はダミーを入れましょう。
これで、
・「192.168.0.10」は/var/www/htmlに
・「192.168.0.20」は/var/www/test01に
・「192.168.0.30」は/var/www/test02に
アクセスするようになります。
それぞれのディレクトリに違いが分かるようにサンプルのhtmlファイルを作成/アップロードして、各ローカルIPでアクセスしてみてください。

うーん

相変わらず説明がヘタクソでながーい投稿になってしまいましたが、やってみたらそれほど難しくはないことが分かると思います。
会社やご自宅にマシンが余っている方は是非お試しください。

複数IPアドレス設定 — server-memo.net

コメントを残してみる

コメント