XAMPPにVirtualHostを設定しドメイン、ドキュメントルートを設置する方法
2023/12/28
XAMPPでバーチャルホスト/バーチャルドメインを設定するとは?
XAMPPとは?
XAMPPとは、LAMP環境(Linux、Apache、MySQL、PHP、Perl)の環境を簡単に作成し、PHP、Perlのプログラム開発、学習を行うための便利なアプリケーションです。
ちなみに、XAMPPは「ザンプ」と呼びます。
XAMPPオフィシャルサイト
https://www.apachefriends.org/jp/index.html
XAMPPを結構長い間使っていましたが、ローカルの実験環境として使っていたため、細かな設定を気にすることがなかったのですが、このたび、XAMPPもバーチャルホストの設定を行うことができることを知りましたので、その設定についてご紹介します。
VirtualHost(バーチャルホスト/バーチャルドメイン)とは?
VirtualHost(バーチャルホスト/バーチャルドメイン)とは、1つのサーバで複数のドメインを運用するための技術です。
例えば、「aaa.com」として設定している Webサーバに対して、「bbb.com」というドメインのサイトも同居させよう、とする場合に必要になる技術で、このバーチャルドメインの技術によって、1つのサーバ(Apache)の中に複数のドメインのサイトを運営させることができるようになります。
XAMPPはローカル環境として使うことが多いため、複数のドメインが設定できることは関係ない、と思うかもしれませんが、このバーチャルドメインの設定をすることで、複数のドキュメントルートを持つ環境を構築することができます。
例えば、バーチャルドメインを設定しない場合に複数のサイトを構築する場合は、下記の様にサブフォルダ形式で構築をする必要があります。
http://localhost/aaa/
http://localhost/bbb/
ですが、バーチャルドメインの設定をすることで、下記の様にそれぞれをドキュメントルートとして環境構築をすることができ、ドキュメントルートからのパスなどを本番環境と同じにすることができる、といったメリットを享受できるようになります。
http://aaa.localhost/
http://bbb.localhost/
ちなみに、バーチャルホスト、バーチャルドメイン、マルチドメイン、仮想ホストなどは、言葉は違いますが同じ技術を指しています。
IPベースバーチャルホスト/名前ベースバーチャルホスト
バーチャルホストには、大きく分けて、「IPベースバーチャルホスト」と「名前ベースバーチャルホスト」があります。
IPベースバーチャルホストは、ドメインごとに IPアドレスを用意し、1つのサーバに複数の IPアドレスを設定することで実現する方法です。
対して、名前ベースバーチャルホストは、1つの IPアドレスに対して複数のドメインを設定する方法です。
IPベースバーチャルホストは、IP層でドメインの判別が可能なため汎用性が高いのですが、IPアドレスの取得はコストがかかるため、明確な目的がある場合以外は「名前ベースバーチャルホスト」を選択することになるでしょう。
XAMPPにバーチャルホストを設定する方法
XAMPPにバーチャルホストを設定する方法として、「名前ベースバーチャルホスト」を設定する方法を解説します。
名前ベースバーチャルホストの設定にもいくつか方法がありますが、下記の 2つの方法を解説します。
ポートにサイトを割り当てる方法
ポートにサイトを割り当てる方法です。
下記のようにポート付きの URLでアクセスする方法です。
http://localhost:8081
設定方法も簡単ですので、おすすめの方法です。
1.httpd-vhosts.confを編集
httpd-vhosts.confを編集します。
XAMPPのコントロールパネルからは選択することができませんので、直接下記のパスのファイルを探して編集します。
C:¥xampp¥apache¥conf¥extra¥httpd-vhosts.conf
編集する内容は、以下になります。
この内容を「httpd-vhosts.conf」の一番最後に追記をします。
1 2 3 4 |
Listen 8081 <VirtualHost *:8081> DocumentRoot "C:/xampp/htdocs/htdocs-8081" </VirtualHost> |
1行目、2行目の「8081」がポート番号を指定する箇所になります。
ポート番号は「0」~「65535」まであり、他のプロトコルで使用していないポート番号であれば何番でもいいのですが、HTTPの標準ポート「80」に対して「80」を重ねる「8080」、そこから番号を増やしていく「8081」「8082」「8083」としていくことが多いような気がします。
また、「DocumentRoot」のパスは、ドキュメントルートにするフォルダまでのパスを指定します。
2.XAMPPの Apacheを再起動
前項で設定した内容を反映させるため、XAMPPのコントロールパネルから、Apacheを再起動します。(「Stop」ボタンで Apacheを止めて、「Start」ボタンで起動させます。)
3.設定の反映を確認
設定した内容が正しく反映されているかを確認するため、下記の URLにアクセスし、ページが表示されるかどうかを確認します。
http://localhost:8081
正しく表示されず、エラーが発生した場合は、後述の「XAMPPのバーチャルホスト設定でエラーが発生した場合の確認項目」で解説をしていますのでそちらを見てください。
hostsを利用してドメインを割り当てる方法
hostsを利用してドメインを割り当てる方法です。
http://example.com
のように、ドメインを当てることができます。
WordPressのようにドメインも含めてシステムで管理されているようなサイトを構築する場合に役に立ちます。
ただし、「XAMPPのApacheが起動しない!ポート番号の変更でバッティングの解消方法」の記事で解説しているように、80番ポートがバッティングするなどの理由で XAMPP自体を 80番ポート以外で運用している場合は、下記のようなポート番号付きの URLになることは避けられません。
http://example.com:8080
1.httpd-vhosts.confを編集
httpd-vhosts.confを編集します。
XAMPPのコントロールパネルからは選択することができませんので、直接下記のパスのファイルを探して編集します。
C:¥xampp¥apache¥conf¥extra¥httpd-vhosts.conf
編集する内容は、以下になります。
この内容を「httpd-vhosts.conf」の一番最後に追記をします。
1 2 3 4 5 |
NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot "C:/xampp/htdocs/htdocs-80" ServerName example.com </VirtualHost> |
先の「ポートにサイトを割り当てる方法」と比較すると、1行目が「NameVirtualHost」になっています。
1行目、2行目のポート番号は、標準の 80番ポートを想定しています。
加えて、4行目に「ServerName example.com」が追加されています。
4行目に設定したいドメイン名を指定します。
ここは、ドメイン名を編集しますが、ローカル環境ですので、ドメインの形式をしていない「localhost2」などでも OKです。
ちなみに、「XAMPPのApacheが起動しない!ポート番号の変更でバッティングの解消方法」で記事を書いているように、XAMPPを 80番ポートと違うポート番号で動作させている場合は、下記のような設定になります。
1 2 3 4 5 |
NameVirtualHost *:8080 <VirtualHost *:8080> DocumentRoot "C:/xampp/htdocs/htdocs-8080" ServerName example.com </VirtualHost> |
こちらは、「8080」番ポートを使用して XAMPPを動かしている場合の想定ですが、1行目、2行目の「80」を「8080」に変更します。
2.hostsを編集
hostsを編集します。
hostsは、下記のファイルになります。拡張子はありません。
C:¥Windows¥System32¥drivers¥etc\hosts
下記の内容を「hosts」の最後に追記をします。
1 |
127.0.0.1 example.com |
hostsについて詳しく知りたい方は、下記の Google検索を見てください。
https://goo.gl/87X5vz
3.XAMPPの Apacheを再起動
前項で設定した内容を反映させるため、XAMPPのコントロールパネルから、Apacheを再起動します。
4.設定の反映を確認
設定した内容が正しく反映されているかを確認するため、下記の URLにアクセスし、ページが表示されるかどうかを確認します。
http://example.com
最初に説明しましたが、そもそもの XAMPPを 80番ポート以外で利用している場合は、ポート付きの URLでアクセスをします。
http://example.com:8080
注意:hostsを利用してドメインを割り当てる方法の注意点 2023.12.28 追記
上記の説明にはやや不足があります。
上記の設定だけを行うだけでは、元の
http://localhost:8094/
でのアクセスが出来なくなります。
そのため、新しく設定する際に元の設定も記述しておく必要がある。
複数のサイトを設定している場合、元の設定も記述しておく必要があります。
C:/xampp/htdocs/htdocs-a
C:/xampp/htdocs/htdocs-b
C:/xampp/htdocs/htdocs-c
C:/xampp/htdocs/htdocs-8080-1
C:/xampp/htdocs/htdocs-8080-2
C:/xampp/htdocs/htdocs-8080-3
例えば、上記のフォルダを設置しており、それぞれ下記でアクセスをしたい場合を想定します。
http://localhost:8080/htdocs-a
http://localhost:8080/htdocs-b
http://localhost:8080/htdocs-c
http://example-1.com:8080
http://example-2.com:8080
http://example-3.com:8080
この場合、「httpd-vhosts.conf」に設定する内容は下記となります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
## localhostの設定 NameVirtualHost *:8080 <VirtualHost *:8080> DocumentRoot "C:/xampp/htdocs/" ServerName localhost </VirtualHost> ## example-1.comの設定 NameVirtualHost *:8080 <VirtualHost *:8080> DocumentRoot "C:/xampp/htdocs/htdocs-8080-1" ServerName example-1.com </VirtualHost> ## example-2.comの設定 NameVirtualHost *:8080 <VirtualHost *:8080> DocumentRoot "C:/xampp/htdocs/htdocs-8080-2" ServerName example-2.com </VirtualHost> ## example-3.comの設定 NameVirtualHost *:8080 <VirtualHost *:8080> DocumentRoot "C:/xampp/htdocs/htdocs-8080-3" ServerName example-3.com </VirtualHost> |
重要なポイントは、一番最初の「C:/xampp/htdocs/
」の設定です。
最初の「localhostの設定」をしていないと「http://localhost:8080」でのアクセスができなくなります。
「httpd-vhosts.conf」の設定をしていないときは「http://localhost:8080」でアクセスしたときは「C:/xampp/htdocs/」にアクセスすることがデフォルトの設定となります。
ですが、「httpd-vhosts.conf」に他の設定をすると、デフォルトの設定が上書きされるため、「httpd-vhosts.conf」を記述するときはデフォルトの設定も明記する必要が発生するということですね。
XAMPPのバーチャルホスト設定でエラーが発生した場合の確認項目
XAMPPの Apacheが起動しない
「httpd-vhosts.conf」を変更した場合は、XAMPPの Apacheの再起動が必要ですが、Apacheが起動しなくなる、という不具合もよく見かける不具合です。
多くの場合は、下記のいずれかです。
・「httpd-vhosts.conf」に記述した文法が間違っている
・設定したポートがバッティングしている
前者は、「VirtualHost」の綴りを間違えていたり、クォーテーションが閉じられていなかったり、といった単純なミスが多くあります。
後者の場合は、「8081」などと設定したポートを他のアプリケーションが利用していてバッティングしている場合があります。
ポート番号を違うものに変えて試してみてください。
「Object not found!」が出る
この「Object not found!」が出るときは、「httpd-vhosts.conf」に指定した「DocumentRoot "C:/xampp/htdocs/htdocs-8081"
」のフォルダのパスが間違っている場合があります。
パスを変更するか、パスの場所にフォルダを作成するかして改めて確認をしてみてください。
「httpd-vhosts.conf」を変更した場合は、XAMPPの Apacheの再起動が必要です。
「正常に接続できませんでした」が出る
「正常に接続できませんでした」が出るときは、「httpd-vhosts.conf」に設定する 1行目の「Listen 8081」が抜けている場合も多々あります。
こちらの抜けがないか確認をしてみてください。
1 2 3 4 |
Listen 8081 <VirtualHost *:8081> DocumentRoot "C:/xampp/htdocs/htdocs-8081" </VirtualHost> |
ちなみに、「Listen 8081」の記述は、「C:\xampp\apache\conf\httpd.conf」に記述する方法もあります。
ただ、バーチャルホストの設定をひとまとめにする、という意味で「httpd-vhosts.conf」に編集する方が無難であろうと思います。
「Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0」が出る
1 2 3 |
Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0 Fatal error: Unknown: Failed opening required 'C:/xampp/htdocs/htdocs/あ/index.php' (include_path='C:\xampp\php\PEAR') in Unknown on line 0 |
HTMLファイルを表示したときは問題なかったけれど、PHPのファイルにアクセスしたら上記のようなエラーが表示された、というエラーが発生する場合があります。
これは、バーチャルホストを設定したパスに日本語(マルチバイト文字、全角文字)が使われているために発生しているエラーです。
バーチャルホストのパスに設定ていなくても、下記の様に URLの途中のフォルダに日本語が使われている場合も同様のエラーが発生します。
http://localhost:8081/あ/index.php
フォルダ名に日本語(マルチバイト文字、全角文字)を使っている場合は、半角英数字に変更しましょう。
この不具合は、XAMPPを動かしている OSの文字コードと PHPの文字コードが一致しないことによるエラーです。
そのため、XAMPPを動かしている OSの文字コードと PHPの文字コードを一致させる対応などを行うことで、日本語を使っていても正しく動くようにすることはできるであろうと思います。
実際に試していませんので、どれくらいの手間なのかは分かりませんが...
XAMPPにバーチャルホストを設定する方法のまとめ
ローカル環境の XAMPPにバーチャルホスト(バーチャルドメイン)を設定する方法を 2つ紹介しました。
単純にドキュメントルートを確保するためにバーチャルホストを設定するならば、1つ目に紹介した「hostsを利用してドメインを割り当てる方法」が簡単です。
ドメインを設定する必要がある場合は「hostsを利用してドメインを割り当てる方法」がありますが、ポート番号なしでアクセスしたい場合は、80番ポートを使用している他のアプリ側のポート番号を変更する必要がでてきますね。
その他、XAMPPに関しては下記の記事を書いていますので、あわせて参考にしてください。
XAMPPの関連記事
WindowsのXAMPPのPHPではstrptimeは使用不可。代替はdate_parse_from_formatを使うXAMPP本体や PHPのバージョンアップをせずにもう一つXAMPPをインストールして複数の環境を共存させる方法
XAMPPとは?パソコンにローカル LAMP環境を簡単に設置する方法を詳細解説
XAMPPにVirtualHostを設定しドメイン、ドキュメントルートを設置する方法
XAMPPのApacheが起動しない!ポート番号の変更でバッティングの解消方法
MySQLのタイムゾーン(mysql_tzinfo_to_sql)の設定方法・XAMPP環境の解説も
XAMPPのWordPressの更新でFatal error: Maximum execution time of 30 seconds exceededのエラーが発生して失敗する場合の対処方法
XAMPP環境で WP-DBMANAGERでの復元でDBが壊れる
XAMPPの Apacheが起動しなくなった場合の対処方法
XAMPP環境(ローカル環境)の sendmailからPHPメールを送信する設定方法
その他の「xampp」に関する記事一覧
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
WindowsXPから Windows7にアップグレードして分かったこと
WindowsXPから 7にアップグレードする際に不安だったバックアップ、ドライバ、32Bit版 64Bit版について書いています。
-
XAMPPとは?パソコンにローカル LAMP環境を簡単に設置する方法を詳細解説
パソコンに LAMP環境を簡単に構築することができるパッケージ「XAMPP」。そのインストール方法を詳細解説。インストール後の不具合やカスタマイズ方法についても説明。
-
Windowsで環境変数のパスの設定方法解説。不具合時のチェックポイントも紹介
Windowsで環境変数であるパス(path)の設定方法の解説。標準的な解説に加え、うまくいかない場合のチェック方法や別の設定方法の解説も。うまく設定できない状況は極力なくなるはず。
-
Windowsに接続したBluetoothキーボード、マウスの突然動かない!つながらない!問題
Bluetooth機器がつながらなくなった!そんなときの対応方法についての解説。Bluetooth接続の電源を勝手にOFFにしないようにする設定を中心に、その他の不具合とその対処方法についても紹介。
-
IEのHTMLソースを秀丸表示で共有メモリへのアクセスが拒否されましたで開けない問題への対処方法
Windows7の IEで HTMLソースを秀丸で表示する際に「共有メモリへのアクセスが拒否されました」のエラーが表示される原因と解決方法の説明。
-
RSA暗号の仕組みがすっきりと分かった瞬間
RSA暗号の仕組みがすっきりと分かったその説明を交えながら、RSA暗号の解説をします。
-
Windowsのメモリ不足はUSBメモリに仮想メモリをおいて高速化
Windowsでメモリ不足の時はUSBメモリ上に仮想メモリ(ページングファイル)設定で解決します。
-
XAMPPの Apacheが起動しなくなった場合の対処方法
ローカルのXAMPP環境で Apacheが起動しなくなる原因の多くはポートのダブり。その対処方法です。
-
XAMPP本体や PHPのバージョンアップをせずにもう一つXAMPPをインストールして複数の環境を共存させる方法
パソコンに簡単に LAMP環境を構築することができるパッケージソフト「XAMPP」。XAMPPのバージョンアップや、PHPのバージョンに合わせて複数の環境を構築する場合の手順を解説。
-
PHPを勉強するための環境を構築するにはXAMPPが最適
PHPを勉強する環境としてローカル環境を構築するには XAMPPが最適。その解説です。