どうも、シローです。
今回はApachのVirtualHostを使った、自分で設定したドメインからLocalHostにアクセスできるようにしてみたので、それをまとめようと思います。
1. VirtualHostを有効にする
VirtualHostとは・・
通常ドメイン(IPアドレスのあだ名、216.58.199.227 => google.co.jp のような)はWebサービスを提供しているサーバ一台につき、一つ割り当てられます。
しかし、複数のドメインを取得して一つのIPアドレスで使いまわすようなこともできます。
それを可能にするのが、ApacheのVirtualHostです。
VirtualHostを設定することで、(127.0.0.1 => test.localhost, 127.0.0.1 => hoge.localhost)のようにhoge.localhostやtest.localhostと別のドメインで同じローカルのサーバにアクセスすることができます。
有効方法
最近のApacheのバージョンでは基本設定でVirtualHostが有効になっていると思いますが、一応、念のため有効になっているか確認することをおすすめします。
確認はUbuntuの場合、"/etc/apache2/apache2.conf"を見てください。(OSやバージョンによって、ファイルのパスが異なります。詳しくは調べましょう)
大体220 ~ 227行目らへんに"IncludeOptional sites-enabled/*.conf"という記述が見られます。
もし、それがコメントアウトされている場合は外しましょう。
これで、有効になります。
1 2 3 4 5 |
# Include generic snippets of statements IncludeOptional conf-enabled/*.conf # Include the virtual host configurations: IncludeOptional sites-enabled/*.conf <= これを有効にする |
2. VirtualHostの設定ファイルを作成する
VirtualHostの設定ファイルは"/etc/apache2/sites-available/"に作成します。
"/etc/apache2/sites-available/test.localhost.conf"を作成して以下のように記述してみましょう。
1 2 3 4 5 6 7 8 |
<VirtualHost *:80> ServerName test.localhost DocumentRoot /var/www/html/test/ <Directory "/var/www/html/test" > AllowOverride All Allow from All </Directory> </VirtualHost> |
3. 設定ファイル用のPATHにファイルを作成する
2の段階でtest.localhostでアクセスされると"/var/www/html/test"のファイルを読み込むようになりました。
ので、そのアクセス先にファイルがないと当然エラーになってしまいますので。
以下のようにディレクトリやファイルを設定しましょう。
1 2 3 |
var/www/html/ |- test |- index.html |
4. 設定ファイルを有効にする
2で作成した段階では設定がApacheに読み込まれていません。
以下のコマンドで有効にしましょう。
1 2 3 4 |
# sites-availableのファイルを有効にする $ sudo a2ensite test.localhost.conf #sites-enableの中に同じファイル(正しくはリンクが作成される) # apacheを再起動させる $ sudo service apach2 restart |
5. 独自ドメインを "/etc/hosts"を編集してアクセスできるようにする
DNSについて・・
4の段階で"test.localhost"にアクセスしてもエラーが帰ってきて来ます。
なぜなら、"test.localhost"というドメインがサーバに認識されていないためです。
"test.localhost"でアクセスできるためには、"test.localhost"というドメインがローカルホストのIPアドレスという紐付けが必要になります。
そのためのシステムを"DNS(Domain Name System)"と言います。
PCがブラウザで"test.localhost"にアクセスした場合、PCはDNSサーバに「"test.localhost" ってドメインはどこのIPアドレス?」て感じで問い合わせます。
そして、DNSサーバは「"test.localhost"ってドメインは"xxx.xxx.xxx.xxx"だよ!」て感じで返答します。
そうするとブラウザが"xxx.xxx.xxx.xxx"ていうIPアドレスのサーバにアクセスしてWebページを表示します。
DNSの設定ファイルである"/etc/hosts"
さて、上記のようにブラウザはDNSに問い合わせてドメインにマッチするIPアドレスを返してくれるのですが、
DNSは複数あってブラウザは巡回的にそれらを回ってIPアドレスを照合します。
その際に一番はじめにアクセスするDNSはブラウザを開いている自分のPCです。
"localhost"ってブラウザに打つとapacheにアクセスできるのも"/etc/hosts"にそういう設定がされているためです。
なので、"/etc/hosts"を開いてみて以下のように編集してみましょう。
1 |
127.0.0.1 localhost test.localhost |
6. ブラウザで "test.localhost"にアクセス
実際に、ブラウザで "test.localhost"にアクセスしてみましょう。
3 で作成したindex.htmlの内容が読み込まれていると思います。