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