ローカルネットワークでDNSを使わずにApacheの名前ベースバーチャルホストのテストを行う

Apacheの名前ベースバーチャルホストを使えば1個のIPアドレスとサーバーで複数のドメイン名を運用できます。ただ、設定を間違えると色々と厄介なので練習環境が欲しいところです。このページでは、ローカルネットワークでDNSの設定を行わずにApacheの名前ベースバーチャルホストのテストを行う方法を解説します。

もくじ

  • 必要なもの
  • Windows(クライアント)側の準備
  • CentOS7(Apache)側の準備
  • いざテスト!

必要なもの

この実験を行うためには、以下のものが必要になります。

  • Windowsマシン(クライアント)
  • CentOS7サーバー(Apacheが動けばCentOSでなくてもOK 仮想マシンでOK)
  • ローカルネットワーク

このページの内容は、以下の環境で検証しています。

  • クライアント…Windows7 SP1
  • サーバー…CentOS7(Windows上の仮想マシン(VMware)で運用)
  • Apache2.4.6
サーバーのIPアドレスは、ルーターの設定で固定しています。なお、サーバーのセットアップは(Apacheのインストールと最低限の設定まで)完了している前提で話を進めるので、まだApacheが動くサーバーがない場合は、こちらを参考にして仮想サーバーを用意してください。

Windows(クライアント)側の準備

クライアント側では「hosts」というファイルを編集し、DNSサーバーの設定に手を触れること無くサーバーにドメイン名でアクセスできるようにします。テキストエディタを管理者権限で起動し、以下のパスのファイルを開いてください。

[VIM] C:\Windows\System32\drivers\etc\hosts [/VIM]

このファイルに、以下のような内容を追記します。 [VIM] (仮想サーバーのIPアドレス) hoge1.test piyo.hoge1.test [/VIM]

IPアドレスの後ろのドメイン名部分は、トップレベルドメインを「.test」にさえしておけば、残りの部分は好きな文字列を使えます。IPアドレスとドメイン名、ドメイン名同士は半角スペースで区切ってください。ここで設定したドメイン名を使ってテストを行います。編集を無事に保存できたら、サーバー側の準備に取り掛かりましょう。

…「hosts」ファイルの編集の仕方がよくわからない!という人は、こちらのページを参考に頑張って編集してください。最悪の場合は、サーバーのIPアドレスだけ調べて上の例をコピペしてもいいです。

CentOS7(Apache)側の準備

今回はあくまでもテストなので、イレギュラーかも知れない操作も行います。但し、ディレクトリ名やユーザー名、ドメイン名の差し替えさえきちんとできれば本番環境の設定にも活かせるように操作していきます。

以下のコマンドを打ち、Apacheでバーチャルホストを使えるようにしましょう。

[VIM] #バーチャルホストの設定用にvhosts.confを新規作成 sudo vim /etc/httpd/conf.d/vhosts.conf #以下の内容を書き込む #(IPアドレス・ドメイン名・ディレクトリ名は適宜差し替え) NameVirtualHost (サーバーのIPアドレス):80 DocumentRoot /var/www/html/hoge1_root ServerName hoge1.test DocumentRoot /var/www/html/piyo1 ServerName piyo.hoge1.test [/VIM]

無事に書き終えたら、以下のコマンドで文法チェックを行います。

[VIM] apachectl configtest [/VIM]

Syntax OK と表示されたら、以下のコマンドでApacheを再起動します。文法ミスが有る場合はどの行がミスっているか表示されるので、必要な修正を加えてください。

[VIM] sudo systemctl restart httpd [/VIM]

今回は名前ベースバーチャルホストを機能させるために必要な最低限の設定のみ書きましたが、実際に使う場合はその他のディレクティブも書いていくことになります。例えばディレクトリに対するAllowOverrideの設定や、Require methodの設定などは必要になってくると思われます。また、ユーザーのホームディレクトリの配下ディレクトリ(/home/hoge/public_html など)を公開したい場合は/etc/httpd/conf.d/userdir.confあたりを弄る必要があります。場合によってはSELinuxの設定を弄る必要もあるかもしれません。

…まあそのへんの話は置いといて、vhosts.confに書き込んだディレクトリを作成します。

[VIM] #/var/www/html/hoge1_rootを作成 sudo mkdir /var/www/html/hoge1_root sudo chown -R hoge:hoge /var/www/html/hoge1_root #/var/www/html/piyo1 sudo mkdir /var/www/html/piyo1 sudo chown -R hoge:hoge /var/www/html/piyo1 [/VIM]

流石に404エラーでは設定が正しいのか確認しにくいので、仮のindex.htmlをそれぞれのディレクトリに作成しましょう。例えばこんな感じです。各ディレクトリごとに内容を変えてください(そうすればちゃんとアクセスが振り分けられていることを確認しやすいです)。

[PHP] test222 I don’t have money. [/PHP] [PHP] test444

I have a pen.

[/PHP]

ここまで終わったら、実際にクライアントからサーバーにアクセスします。

いざテスト!

ここまでの設定を終えたら、Windows(クライアント)で適当なブラウザを入力し、「hosts」ファイルとサーバーに設定したドメイン名にアクセスしましょう。このページの手順をそのままそっくりやっている場合は、「hoge1.test」と「piyo.hoge1.test」にアクセスし、違う内容の画面が出てくれば成功です。


index.htmlがきちんと表示されました。


違う内容のindex.htmlが表示されたので、バーチャルホストは機能していると見て良いでしょう。実験成功です。

このブログを応援する・寄付する

当ブログでは暗号通貨による寄付を募っております。

モナゲボタン モナゲボタン

Bitcoin:

Monacoin:

Litecoin: