XAMPPのバーチャルホストを設定してCakePHPのテストサイトを構築する。

CakePHPで開発していて、ローカルのサーバーにテストサイトで動かしたいとき、まともにlocalhost直下に置ければいいのですが、いろいろとプロジェクトを抱えていると、たくさんのテストサイトを同時に動かしたいときがあります。サブディレクトリごとに設定してあげてもいいのですが、これだと.htaccessの設定が面倒であったり、絶対アドレスでリンクを指定できないとか制限があります。

ドメイン直下にドキュメントルートを配置できればいいのですが、一つ考えられるのはサブドメインを指定するというのがあります。しかし、これではlocalhostでは指定できないととか、わざわざローカルのPCにサブドメインを指定するのもやっかいであるとなります。

次に考えられるのはポート番号で分けてしまう方法があります。例えば

  • Aプロジェクトは、http://localhost:8080/
  • Bプロジェクトは、http://localhost:8082/

などでアクセスすることになります。これですと、ポート番号を適当に追加していけばプロジェクトを分けてアクセスすることが可能にになります。

簡単にローカルのPCにCakePHPのテスト環境を構築するにはXAMPPをインストールしてしまうのが一番簡単です、XAMPPを一つインストールしてしまえば、CakePHPのテスト環境で必要なApacheや、PHP、MySQLも動かすことがことができます。

ポート番号で分けてCakePHPの環境で動かすには、Apacheのhttpd.confにバーチャルホストの設定を追加してしまいます(ここからが本題)。上記のAプロジェクトの場合はApacheのhttpd.confに以下のバーチャルホストの設定を追加します。

Listen <span style="color: #ff0000;">8080</span>

8080>

DocumentRoot "<span style="color: #ff0000;">C:/workspace/TestProject/app/webroot</span>"
DirectoryIndex index.html index.php
ServerName localhost

<Directory "<span style="color: #ff0000;">C:/workspace/TestProject/app/webroot</span>">
Options Indexes FollowSymLinks MultiViews Includes ExecCGI
AllowOverride All
Order deny,allow
Allow from all

この場合、ダウンロードしたCakePHPは、c:\workspace\TestProjectにコピーしてしますと(EclipseのPDTで開発しているためこんなディレクトリにプロジェクトを入れています)、ドキュメントルートはその下の\app\webrootになります。プロジェクトを増やす場合は、赤字の部分を変更すればいいでしょう。

Optionsは、適当に動作させる環境に合わせて設定してください。これは、テスト環境を自分のローカルPC以外からアクセスできないようにしたり、ましてインターネットからアクセスできないようにしたり(もちろん当たり前ですが)してしまえば、あまり気にしなくてもよいかもしれません。

以上、いつもhttpd.confの設定でつまずく覚え書きです。

追記

せっかくこの記事にたどり着いて読んでくれたところ申し訳ありませんが、現在(2014/04/28)のところ、この方法は使っていません。今はVirtual Box+Vagrant+Chefでローカルのテストサイトを構築しています。

なかなかサーバーが組み上がらない。何をやっているのやら・・・。

余っているPCを使ってサーバーを組み上げるという記事を書いたが、まだ終わらない。SATAのハードディスクが認識できないので、マザーボード交換したまでは書いた。

今度は、CPUの5V電源コネクタが4Pではなくて8Pであった。仕方ないので4Pから8Pの変換ゲーブルを買ってきた。秋葉原で探したが見つからなかったが、DOSパラで見つけた。もし、見つからなかったら、電源を買ってしまおうと思った。

しかし、今度は大きな問題が発生。買ったマザーボードにグラフィックチップが載っていない。手元にあるカードはAGPが2枚あるが、マザーボードのバスはPCI ExpressかPCI。したがって、ディスプレイがつながらない。

これでサーバー構築は今日はおしまい。明日、自宅にあるグラフィックボードを持ってくるか・・・。

なんだか、何をやっているのやら・・・。ダメダメですね。