自宅のテストサーバのApacheで、仮想ホストをつくって複数のWebアプリを同時に動かしたい。アクセス元となるPCでhostsを設定して、アクセスの際のホスト名ごとに各Webアプリが動くようにする。
一応、僕の環境
CentOS7、Apache2.4.x、LAN内にサーバと開発PCがそれぞれある。
名前ベースのバーチャルホスト
そのホストへのリクエストをホスト名(サーバ名)ごとに、違うドキュメントルートを設定できたりする。
できること
app1/index.phpでアクセス、/www/app1/index.phpを返す。
app2/index.phpでアクセス、/www/app2/index.phpを返す。
192.168.0.2/index.phpでアクセス、/www/app2/index.phpを返す。
こんなかんじでホスト名で分岐することができる。
やりかた
簡単にWebminを使ってみる
サーバ>Apache Webサーバを開き、「仮想ホストの作成」タブで簡単に作成できる。
app1/index.phpでアクセス、/www/app1/index.phpを返す。これを例として設定する。
ドキュメントルートにファイルを置くところのパス、サーバ名に使いたいホスト名app1を記述。
作成するを押して、前の画面でApacheの再起動をする。サーバ側は基本的なことはこれだけ。
クライアント側でhostsを設定
Windowsであればhostsファイルの場所は「C:\Windows\System32\drivers\etc\hosts」
場所が場所なので、管理者権限をつけてメモ帳などを起動して編集します。
コメントで例が書いてあるのでコピペして、接続先IPアドレス、ホスト名の順で記述。たぶんTab区切り。あと#が先頭に付いているのはコメントなので無視されます。
「192.168.0.2 app1」
するとここで記述したホスト名にアクセスすると、その接続先IPアドレスに接続されるようになる。
この時点でブラウザでアクセスして接続できるか確認しておく
実はhostsで設定しても使えないホスト名がある。「*.dev」とか。
接続が拒否されるかんじのエラーでなければ大丈夫。
違うホスト名でアクセスしても同じ内容しか返さないときは、htttpd.confを編集する。
よく使うApacheの設定ファイルhttod.conf。場所は環境に寄りますが、参考程度に僕のは/etc/httpd/conf/httpd.confです。
webminであれば、サーバ>Apache Webサーバを開き、「グローバル設定」タブ内の、「設定ファイルの編集」の項目でブラウザから編集できる。
ファイルの一番最後の方にWebminがさっき生成してくれた設定が記述されている。名前ベースのバーチャルホストとして動かすための記述も必要になる。
NameVirtualHostって項目がそれ。これは設定ファイル内に1度記述されていればよいので、最初だけ書く必要がある。
NameVirtualHost *:80 //これを自分で追記する <VirtualHost *> DocumentRoot /www/app1 ServerName app1 <Directory "/www/app1"> allow from all Options None Require all granted </Directory> </VirtualHost>
いくつかのホスト名で同じ仮想ホストに接続する
app1でもgoodappでも192.168.0.2でも同じ内容を表示させることもできる。
これはhttod.confでやった。ServerNameのところらへんに追記すると見やすい。
ServerName app1 ServerAlias goodapp 192.168.0.2 //これを追記
スペース区切りで複数記述できる。
おわり
こんな感じで仮想ホストを作成できる。さらに仮想ホストを追加していく場合でも、同じように作業すればいいだけです。