【2023年10月版】Apache2.4にバーチャルホストを追加する

Apacheにバーチャルホスト PHP
※当サイトはアフィリエイト広告を掲載しています。

先日、Windows11搭載のPCにApache2.4をインストールしました。これでもApacheを使えはしますが、現実問題http://localhostだけでは使いづらいです。

とりあえずテストしたい……というような用途のみであれば問題ありませんが、複数プロジェクト(サイト)で学習したり、実務をこなしたり等の場合はちょっと管理しづらい。

そこで、バーチャルホストを設定し、より複数のプロジェクトを管理できるようにしたいと思います。

Apacheのインストールがお済みでない場合は、こちらを参考に済ませておいてください。

バーチャルホストの基本

本ページの解説を必要とする方は、おそらくバーチャルホストの概念がよくわからない方も多いと思います(知っていて必要ならすでに設定していると思うので)。

そこで、ざっくりとバーチャルホストについてや、設定すると得られるメリットなどを書いておきます。

バーチャルホストとは!?

1台のサーバー(Apache等)で、複数のホストを動作させることができる機能です。

ホストとは、URL内のwww.example.jpなどの部分を指します。

例えば、ローカルPCのApacheにバーチャルホストを設定したとしましょう。

以下の様なアドレスで自分のマシン(Apache)にアクセス&開発ができるのです。

もちろん、それぞれのホストで、PCのどのフォルダを参照するかも自由に変えられます。

え……yahooもできる!?

Lara
Lara

自分のパソコンの中に限ったお話ですので、自由に設定できますよ。まあ、普通は無関係なドメインを使うことはありませんけどね。

開発時の何がメリット!?

バーチャルホストは、我々PHPやLaravelを開発する者にとっても、複数案件を管理する際に便利です。

例えば、以下のURLでサイトAの開発をしていたとします。

http://localhost/

でも、サイトB・Cと開発があると、全部localhostだとどう開発すれば良いでしょうか。

サイトAは良いとしても、扱いが平等ではなくなってしまいます。それに、サイトB&サイトCは、本番サイトとパス構成がずれてしまい、問題が発生することがあります。

バーチャルホストを利用すれば、これが解決します。例えば以下の様にアクセス可能です。

これなら、本番環境と全く同じパス構成にできるので、開発もしやすいですね。

ここではローカルPCのApacheを使った場合のお話です。VSCodeの拡張や、各種開発ツール(viteやwebpack、gulp等)を使う場合は、全てlocalhostでの開発も可能です。

ホストの設定

前置きはこの辺にして、ここからApacheでバーチャルホストを設定する例をご紹介します。

私の環境: Apacheのバージョン2.4&Windows 11 Professionalで行いますが、他のバージョンでも基本的に同じですのでご安心ください。

ホストを決める

まずはこれから自分のPCに設定したいホスト名を決めます。

今回の解説では、以下とします。

local.laranote.jp

以後、ご自身の希望の名称に置き換えてお読みください。

なお、ホスト名は、インターネット上に存在する・しない、ドメインを取得している・いないなど、一切関係ありません。

前述の通り、自分のPC内に限定したホスト名ですので、自由に決めてOKです。現実的には、実サイトのホスト名と似た名称を付けるのが分かりやすそうです。

統一したルールで設定すれば、本番環境と開発環境をワンクリックで行き来できるブックマークレット(JavaScriptで呼び出す機能)を作る……なんてことも可能ですね。

例えば、本番: laranote.jpと、開発: local.laranote.jpのような関係なら、local.を付けたり外したりするなどです。

ホスト名を自分の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です。

まずは、お好きなテキストエディタを右クリック→「管理者として実行」で起動させます。

面倒くさいのですが、hostsファイルは管理者権限が無いと保存できません。普通に開いてしまうと、保存時にエラーになってがっかりすることになりますのでご注意を。

そして以下のファイルを開いてください。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ファイルを置いて確認してみても良いですね。

通常、hostsを保存したらすぐ反映されますが、まれに時間がかかることもあります。何度か再読込をしてみるか、異なるブラウザでアクセスしてみるのもよいでしょう。

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を再起動します。こうしないと、これまで行った設定が反映されないからです。

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に追記していけば、いくらでも開発用のホストが登録できます。

仕事現場では、何度も対象ホストを入れ替えて作業をすることもありますが、このようにバーチャルホストとして設定しておけば開発が楽になります。

学習・お仕事・趣味など幅広く使えますので、是非使ってみてください。

コメント

タイトルとURLをコピーしました