先日、Windows11搭載のPCにApache2.4をインストールしました。これでもApacheを使えはしますが、現実問題http://localhost
だけでは使いづらいです。
とりあえずテストしたい……というような用途のみであれば問題ありませんが、複数プロジェクト(サイト)で学習したり、実務をこなしたり等の場合はちょっと管理しづらい。
そこで、バーチャルホストを設定し、より複数のプロジェクトを管理できるようにしたいと思います。
バーチャルホストの基本
本ページの解説を必要とする方は、おそらくバーチャルホストの概念がよくわからない方も多いと思います(知っていて必要ならすでに設定していると思うので)。
そこで、ざっくりとバーチャルホストについてや、設定すると得られるメリットなどを書いておきます。
バーチャルホストとは!?
1台のサーバー(Apache等)で、複数のホストを動作させることができる機能です。
例えば、ローカルPCのApacheにバーチャルホストを設定したとしましょう。
以下の様なアドレスで自分のマシン(Apache)にアクセス&開発ができるのです。
http://localhost
http://hoge.example.jp
http://foo.example.jp
Yahoo! JAPANあなたの毎日をアップデートする情報ポータル。検索、ニュース、天気、スポーツ、メール、ショッピング、オークションなど便利なサービスを展開しています。
もちろん、それぞれのホストで、PCのどのフォルダを参照するかも自由に変えられます。
え……yahooもできる!?
自分のパソコンの中に限ったお話ですので、自由に設定できますよ。まあ、普通は無関係なドメインを使うことはありませんけどね。
開発時の何がメリット!?
バーチャルホストは、我々PHPやLaravelを開発する者にとっても、複数案件を管理する際に便利です。
例えば、以下のURLでサイトAの開発をしていたとします。
http://localhost/
でも、サイトB・Cと開発があると、全部localhostだとどう開発すれば良いでしょうか。
http://localhost/
http://localhost/site2
http://localhost/site3
サイトAは良いとしても、扱いが平等ではなくなってしまいます。それに、サイトB&サイトCは、本番サイトとパス構成がずれてしまい、問題が発生することがあります。
バーチャルホストを利用すれば、これが解決します。例えば以下の様にアクセス可能です。
http://local.site1.jp
http://local.site2.jp
http://local.site3.jp
これなら、本番環境と全く同じパス構成にできるので、開発もしやすいですね。
ホストの設定
前置きはこの辺にして、ここからApacheでバーチャルホストを設定する例をご紹介します。
私の環境: Apacheのバージョン2.4&Windows 11 Professionalで行いますが、他のバージョンでも基本的に同じですのでご安心ください。
ホストを決める
まずはこれから自分のPCに設定したいホスト名を決めます。
今回の解説では、以下とします。
local.laranote.jp
以後、ご自身の希望の名称に置き換えてお読みください。
なお、ホスト名は、インターネット上に存在する・しない、ドメインを取得している・いないなど、一切関係ありません。
前述の通り、自分のPC内に限定したホスト名ですので、自由に決めてOKです。現実的には、実サイトのホスト名と似た名称を付けるのが分かりやすそうです。
ホスト名を自分のPCに参照させるための基本知識
私の例で言えば、local.laranote.jp
にアクセスした場合、自分のPC(IPアドレス)を参照するようにするのが今回の目標です。
これには、DNS(ドメイン・ネーム・システム)を軽く理解しておく必要があります。要はlocal.laranote.jp
に対するIPアドレスはXXXX.XX.XXX.XXX
という対応表のようなものがあるのです。
もちろん全世界が参照する、本物のDNSの情報を勝手に第三者が書き込むことはできません。
しかし自分のPCだけにDNSを設定することは可能です。それにはhosts(ホスツ)というファイルを修正します。
hostsファイルを修正
結論としては、hostファイルにlocal.laranote.jp
に対応するIPアドレスは127.0.0.1
(自PCを指す特別なIPアドレス)と設定すればOKです。
まずは、お好きなテキストエディタを右クリック→「管理者として実行」で起動させます。
そして以下のファイルを開いてください。hostという拡張子が無いファイルです。
C:\Windows\System32\drivers\etc\hosts
適当に、どこでも良いので(最終行などに)以下の様に追記&保存します。ホストとIPアドレスの間は、タブかスペースです。
local.laranote.jp 127.0.0.1
これで、上記ホストにアクセスした場合は、自分のPCを参照するようになります。
動作確認する
この例であれば、以下にアクセスすると、公開ディレクトリにアクセスできます。
http://local.laranote.jp
Apacheインストール直後であれば、以下の様な表示になっていればOKです。
※URLはlocalhostになっていますが気にしないでください。
公開ディレクトリにファイルがなければ、Not Foundか、ファイル一覧が見えているかもしれません。公開ディレクトリに、適当にindex.htmlファイルを置いて確認してみても良いですね。
Apacheにホストを登録
希望のホスト名が、自分のローカルPCのApacheを参照するようになったら、次はApacheの設定です。
特定のホスト名でリクエストされた場合、任意のフォルダにアクセスするようにしましょう。
バーチャルホスト用の設定ファイル読み込み
テキストエディタで以下のファイルを開きます。
C:\Apache2457\conf\httpd.conf
↑この部分はApacheのインストールされたパスに読みかえてください。
上記ファイルの、以下の様な箇所を探してみてください。私の環境では515行目あたりにありました。
# Virtual hosts
#Include conf/extra/httpd-vhosts.conf
ここで、バーチャルホストの設定ファイルを読むようにしたいので、コメントアウトを以下の様に外します。
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
これで、conf/extra/httpd-vhosts.conf
という設定ファイルを読み込むようになりました。
このファイルは、vhosts(virtual hosts)という名前からも分かるとおり、バーチャルホストに関連する設定を書き込むためのファイルです。
vhosts.confを修正
続いて、先ほど読み込むように設定したhttpd-vhosts.conf
を開きます。お好きなテキストファイルで開いてください。
C:\Apache2457\conf\extra\httpd-vhosts.conf
↑この部分はApacheのインストールされたパスに読みかえてください。
画面の最下部あたりに、以下の様な記述があるので、まるっとコピー&その下に貼り付けてください。これをひな形として使います。
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "${SRVROOT}/docs/dummy-host2.example.com"
ServerName dummy-host2.example.com
ErrorLog "logs/dummy-host2.example.com-error.log"
CustomLog "logs/dummy-host2.example.com-access.log" common
</VirtualHost>
私は、以下の様に修正しました。
<VirtualHost *:80>
# 1.サーバー管理者のメールアドレス
ServerAdmin info@example.jp
# 2.公開ディレクトリ(マスト)
DocumentRoot "D:\www\laranote.jp\public"
# 3. ホスト(マスト)
ServerName local.laranote.jp
# 4. エラーログ
ErrorLog "logs/local.laranote.jp-error.log"
# 5. カスタムログ
CustomLog "logs/local.laranote.jp-access.log" common
</VirtualHost>
重要なのは、2, 3です。
まず2は、ホストに対する公開ディレクトリ(フォルダ)のパスを指定します。特に理由が無い場合はhttp://localhost
でアクセスした際の公開ディレクトリの下層を指定することをお勧めします。
3で、自分で決めたホスト名を入力します(hostsで指定したホスト名)。
1は管理者のメールアドレスですが、開発環境では使いません。4はエラーのログ。5はその他の普通のログです。
1, 4, 5は最悪無くても動作しますので、適宜設定ください。
動作確認
まずは、Apacheを再起動します。こうしないと、これまで行った設定が反映されないからです。
その上で、公開ディレクトリ(ここではD:\www\laranote.jp\public
)に、適当な動作確認要のメッセージを書いたindex.html
ファイルを配置してください。
その上でブラウザから以下にアクセスして、動作確認します。
http://local.laranote.jp
これで、先ほど置いたindex.html
の内容が表示されればOKです。
おまけ
バーチャルホストが1つでも有効に機能すると、http://localhost/
でのアクセスがうまくできなくなるようです。
http://localhost/
は使わない、という人はこのままでもかまいません。
併用したい方は、以下の様にlocalhostもバーチャルホストに追加設定しておくことで回避できます。
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "D:/www"
ServerName localhost
ErrorLog "logs/localhost-error.log"
CustomLog "logs/localhost-access.log" common
</VirtualHost>
もちろんDocumentRoot
や各種ログはご自由に。
まとめ
以上、バーチャルホストの設定方法を解説しました。
1つできれば、後は同じようにhostファイルやhttpd-vhosts.conf
に追記していけば、いくらでも開発用のホストが登録できます。
仕事現場では、何度も対象ホストを入れ替えて作業をすることもありますが、このようにバーチャルホストとして設定しておけば開発が楽になります。
学習・お仕事・趣味など幅広く使えますので、是非使ってみてください。
コメント