XAMPP等各種アプリケーションをインストールされたことと思います。この状態でXAMPPを起動し、Apacheをスタートさせローカルの開発環境へブラウザからアクセスするには、ブラウザのURL欄に
「http://localhost/bookmin/index.php」
あるいは
「http://127.0.0.1/bookmin/index.php」
と入力することになります。
これを、「機能マップとアプリの基本構成」で示した通りドメイン名「http://www-dev.bookmin.jp」でアクセスできるようにします。
OSの設定
まず、
C:¥windows¥system32¥drivers¥etc¥hosts
の[ hosts ]ファイルを編集します。[ hosts ]ファイルには拡張子はありません。この[ hosts ]ファイルはIPアドレスとホスト名の対応を制御するための設定ファイルです。この[ hosts ]ファイルを編集することでローカルPCでも[ http://www.bookmin.jp ]のように指定できるようになるわけです。
[ hosts ]ファイルは管理者以外では編集できないようになっています。そこで、[ hosts ]ファイルののプロパティを開きセキュリティの「グループ名またはユーザー名」に、ログインユーザーを追加し、そのユーザーのアクセス許可に変更を追加します。変更権限が追加されたところで、以下のように編集します。PostgreSQLをインストールをした際のユーザー[ postres ]の権限を編集した手順と同じ手順です。
[ host ]ファイルをメモ帳等で開き末尾に
127.0.0.1 www-dev.bookmin.jp pos-dev.bookmin.jp try.bookmin.jp
を追加します。各ドメイン間は半角スペースで区切ります。
ちなみに、一つのIPアドレスに対し、指定できるドメイン名はWindowsの場合8つまでです。
さて、これで、ブラウザのURLにドメイン名を入れて自分自身にアクセスできるようになりました。
続いて、[ VirtualHost ]という機能を使用して、それぞれのドメインに対応した、フォルダを指定します。
[ VirtulaHost ]とは、1台のサーバーで複数のドメインを運用するための機能です。[ VirtualHost ]の設定はApacheの設定ファイルで行います。
Apacheの設定
次のファイルを開きます。
C:\xammp\apache\cont\extra\httpd-vhosts.conf
開きましたら、末尾に以下を追記してください。
<VirtualHost *:80> ServerAdmin webmaster@www.bookmin.jp ServerName www-dev.bookmin.jp DocumentRoot "C:\wwwroot\bookmin\manager" ErrorLog "logs/bookmin.error.log" CustomLog "logs/bookmin.access.log" common </VirtualHost>
<VirtualHost>
このブロックが、VirtualHostの一つの単位になります。ドメイン名ごとに異なるディレクトを指定したい場合は、このブロックを複数記述します。
[ *:80 ]はこのVirtualHostに対応するIPアドレスとポート番号です。[ * ]はワイルドカードといって、このPCのすべてのIPアドレスが対象であるという意味です。[ : ]コロンで区切られた右側はポート番号です。80ということはHTTP通信を受け付けた場合という意味になります。ここが443ですとHTTPS通信の場合はという意味になります。
例えば、
ServerAdmin
404エラー等の画面に表示される管理者のメールアドレスです。ServerAdminは無くても構いません。
ServerAdminを省くと[ httpd.conf ]の210行目あたりに記述されている
ServerAdmin postmaster@localhost
このメールアドレスが使用されます
この画面のウェブ管理者Linkにマウスのカーソルを重ねると右下に、[ mailto:webmaster@www.bookmin.jp ]が表れます。ServerAdminが埋め込まれていることが確認できます。
ServerName
ここで指定したドメイン名でアクセスしてきた場合という意味です。複数のドメイン名を指定することも可能
です。
DocumentRoot
ServerNameで指定したドメイン名でアクセスしてきた場合、ここで指定したディレクトリ内のファイルを参照するという意味です。
この例ですと、
http://www-dev.bookmin.jp/
でアクセスした場合、
"C:\wwwroot\bookmin\manager”
内のファイルを参照するという意味です。
なぜこのような設定をするかと言いますと、[ manager ]と同じ階層にある、[ inclueds ]や[ app-data ]といった重要なサーバー設定データやプログラムを外部からアクセスできなくし、保護することができるからです。これらのディレクトリに外部からアクセスする方法をそもそもなくしてしまうというわけです。
しかし、このままでは一つ問題があります。[ manager ]と同じ階層にあり静的コンテンツを格納している[ assets ]にもアクセスできません。するとCSSファイルをブラウザが読み込んだりや画像をブラウザ上に表示できなくなってしまいます。そこで後述する仮想ディレクトリという機能を使用して[ assets ]にはアクセスできるように設定します。
ErrorLog, CustomLog
何かしらのエラーが生じた場合のログをどこに何というファイル名で記録するかを指定します。相対パスで記述する場合、[apache]ディレクトリ以下を記述します。
この例ですと、
C:\xampp\apache\logs\bookmin.error.log
というパスになります。
それでは、[ pos-dev.bookmin.jp ]と[ try.bookmin.jp] 分も追記します。
<VirtualHost *:80> ServerAdmin webmaster@www.bookmin.jp DocumentRoot "C:\wwwroot\bookmin\pos-regi" ServerName pos-dev.bookmin.jp ErrorLog "logs/bookmin-pos.error.log" CustomLog "logs/bookmin-pos.access.log" common </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@www.bookmin.jp DocumentRoot "C:\wwwroot\bookmin-try" ServerName try.bookmin.jp ErrorLog "logs/bookmin-try.error.log" CustomLog "logs/bookmin-try.access.log" common </VirtualHost>
[assets]を仮想ディレクトリとして設定する
[ httpd.conf ]の330行目あたりにある<IfModule alias_module>探してください。
その中に
Alias /assets "C:\wwwroot\bookmin\assets" <Directory "C:\wwwroot\bookmin\manager"> Allow from all </Directory>
と追記します。
Alias
仮想ディレクトリの設定であるという識別子です。
/assets
仮想ディレクトリ名です。
C:\wwwroot\bookmin\assets
仮想ディレクトリ名に対応する物理ディレクトリパスです。
Allow from all
すべてのアクセスを許可するという意味です。ここにオプションの書き加えることで様々なアクセス制御を行えます。例えば[ Allow from bizapp.co.jp ]を記述するとドメイン名が[ bizapp.co.jp ]のクライアントからのアクセスのみを許可するという意味になりますし、[ Allow ]を[ Deny ]に変更すればアクセスを拒否するという意味になります。
今回の設定ですと、
http://www-dev-bookmin.jp/assets
というリクエストが来たら
"C:\wwwroot\bookmin\assets”
このディレクトリを参照を全て許可するという意味になります。