Ethna

ドキュメントルート問題

複数の案件に対応するとき、一つ解決しておきたい問題があります。
それは、ドキュメントルート問題です。

Ethnaで作成したアプリケーションが最終的にウェブサイトのルートに置かれることは稀で、
実際にはルートより1階層下の位置に配置され、サイトのルートからは<A>リンクタグなどで起動させられる構成が最も一般的と思います。

この構成の場合、顧客が1件ならば問題は無いのですが、複数の顧客に対応しようとした場合に問題が発生します。
例えば、顧客A向けにApp-Aを開発し、顧客B向けにApp-Bを開発する場合、開発するアプリの置き場所はこのようになるはずです。

顧客A向け App-Aの置き場所
http://localhost/App-A/
顧客B向け App-Bの置き場所
http://localhost/App-B/

このような場合、サイトのドキュメントルートである http://localhost/ については顧客A向けと顧客B向けで共有されることになってしまいます。

ドキュメントルート問題

バーチャルホスト設定

ここでは、上記のドキュメントルート問題に対し、バーチャルホスト設定による解決を提案します。

バーチャルホスト構成の提案

xamppに添付するApacheでは、バーチャルホスト設定を以下のファイルで管理しています。

httpd-vhosts.confファイルの場所
C:\xampp\apache\conf\extra\httpd-vhosts.conf

また、ローカルでの名前解決を行うhosts(ホスツ)の編集も必要です。

hostsファイルの場所
C:\Windows\System32\drivers\etc\hosts

以降はこの2つのファイルの編集について説明していきます。

事前準備1

以降の作業は、管理者権限で開いたコマンドプロンプトが必要です。

この2つのファイルは、今後もときどき編集する必要が出てきますので、シンボリックリンクを作成しておきます。
(これは1度だけでよく、次回からはやらなくてよい)

>cd \xampp\EthnaProjects
>mklink hosts \Windows\System32\drivers\etc\hosts
>mklink vhosts \xampp\apache\conf\extra\httpd-vhosts.conf

ご存知とは思いますが、このような長いパスを入力する場合は、入力途中でキーボードのTABキーを押して入力補完機能を積極的に使いましょう。

事前準備2

このページの説明通りにコマンドを入力していくと、3つのサイトが出来上がります。
先に、サイトのフォルダーを作成しておきましょう。

>cd \xampp\htdocs
>md localhost

これらのコマンドは、C:\xampp\htdocs フォルダに移動し、その中に localhost というフォルダーを作成しています。
ここで作成していないxamppフォルダーについては既に存在しているはずですので、省略しています。

また、sampleprojectについてはフォルダーを作成するのではなく、
先にEthnaで作成したプロジェクトのwwwフォルダーへのシンボリックリンクを作成しておきます。

>mklink /D sampleproject ..\EthnaProjects\SampleProject\www

エクスプローラーでC:\xampp\htdocsフォルダーの中を確認してみてください。
また、作成したlocalhostフォルダーには、適当に作成した仮の index.html を放り込んでおいてください。
(C:\xampp\htdocs にある index.html をコピーして済ませるとか、スマートでいいですね。)

xampp Apache における VirtualHost 設定

バーチャルホストの設定を変更します。
先にシンボリックリンクの設定をしておけば、こんな簡単なコマンドで編集が可能になります。

>cd \xampp\EthnaProjects
>notepad vhosts

メモ帳が管理者モードで起動しますので、##NameVirtualHost *:80と書かれた行を探し、コメントの'#'2個を削除します。

バーチャルホスト設定

そのあと、ファイルの末尾に次のように追記します。

<VirtualHost *:80>
   ServerAdmin postmaster@localhost
   DocumentRoot "C:/xampp/htdocs/localhost"
   ServerName localhost
</VirtualHost>

<VirtualHost *:80>
   ServerAdmin postmaster@xampp
   DocumentRoot "C:/xampp/htdocs/xampp"
   ServerName xampp
</VirtualHost>

<VirtualHost *:80>
   ServerAdmin postmaster@SampleProject
   DocumentRoot "C:/xampp/htdocs/SampleProject"
   ServerName SampleProject
</VirtualHost>

最後のSampleProjectの部分は、自身で作成中のものを入れてください。

編集後、ファイルを保存してメモ帳を閉じ、Apacheを再起動します。

>net stop apache2.2
>net start apache2.2

これにより、3つのサイトが出来上がります。

おっと待った!
Apache側の準備はできましたが、
ブラウザが正しく表示できるようになるには、もう少し設定を続ける必要があります。

Windows Vista/7 における hosts 設定

hosts(ホスツ)とは、TCP/IPを利用するコンピュータにおけるホスト名のデータベースで、IPアドレスとホスト名の対応を記述したテキストファイルです。

以下のように編集を開始します。
先にシンボリックリンクの設定をしておけば、こんな簡単なコマンドで編集が可能になります。

>cd \xampp\EthnaProjects
>notepad hosts

メモ帳が管理者モードで起動し、hostsファイルが編集可能状態で読み込まれます。
# localhost name resolution is なんたら〜 と書かれた次の行にある、 127.0.0.1 の先頭の#を取り除き、
localhostに続けてスペースを挟みながら xampp sampleproject ...と、開きたいサイトの名前を書き連ねます。

hostsファイルの編集

編集後、ファイルを保存してメモ帳を閉じます。

今度はうまくいくはずです。


添付ファイル: fileedit_hosts.png 220件 [詳細] fileproposal_vhost.png 226件 [詳細] fileproblem_docroot.png 233件 [詳細] file20110223101207.png 252件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-05-01 (火) 14:52:38 (2270d)