Mongrel + Apache 2.0 (mod_proxy) をサブディレクトリで
2007/03/12
これまで Rails で作ったアプリケーションは Apache 2.0 + FastCGI で動かしていましたが、開発環境では Mongrel を利用しているので、できれば Mongrel で運用したいと思っていました。ちなみに Mongrel とは
Mongrel is a fast HTTP library and server for Ruby that is intended for hosting Ruby web applications of any kind using plain HTTP rather than FastCGI or SCGI. It is framework agnostic and already supports Ruby On Rails, Og+Nitro, Camping, and IOWA frameworks.
です。
先ごろ Mongrel もバージョンも 1.0 を超えたので、Apache と組み合わせて運用に使ってみることにしました。環境は以下の通りです。
- CentOS 4.4
- Apache 2.0.52 (CentOS Package)
- Mongrel 1.0.1
要件は
- Rails アプリケーションは Mongrel で提供する
- 複数の Rails アプリケーションを同時に提供する
- 複数の Rails アプリケーションを同一ドメインの別ディレクトリで提供する(バーチャルホストは利用しない)
- Rails アプリケーション以外は Apache で提供する
になります。
CakePHP on XAMPP でちょっとはまった
2007/02/5
仕事で CakePHP を使ってみようと思い、Cake ブログチュートリアルにしたがってブログを作ってみようとしたところ、mod_rewrite まわりではまったので作業メモを残します。ポイントは、アプリケーションの .htaccess に RewriteBase を正しく設定することでした。
肝心の CakePHP ですが、開発環境は以下の通り。
- OS: Windows XP
- サーバ: XAMPP for Windows 1.5.5
- IDE: EasyEclipse for LAMP
XAMPP は C:\Program Files\XAMPP 以下にインストールされており、Eclipse のワークスペースは D:\doc\workspace にあります。ブログアプリケーションは D:\doc\workspace\blog に作りました。
症状としては「アプリケーションへのアクセスに Apache の Alias を利用した場合に、mod_rewrite が正しく動作せず、CSSや画像が読み込まれなかった」です。
以下、作業手順です。
—–
1. Apache の設定
XAMPP の Apache は初期状態で mod_rewrite が無効になっているので、有効にする。設定ファイルの
#LoadModule rewrite_module modules/mod_rewrite.so
の行頭の # を外して mod_rewrite モジュールをロードする。
また、http://localhost/blog でブログアプリケーションにアクセスするために、エイリアス設定を行う。同時にアプリケーションで .htaccess を有効にするため、AllowOverride All を設定しておく。
Alias /blog/ "D:/doc/workspace/blog/"
<Directory "D:/doc/workspace/blog">
AllowOverride All
Allow from All
</Directory>
2. ブログアプリケーションの設定
チュートリアルにしたがって、データベース等の設定を行う。ここで、mod_rewrite の設定にはまった。上記の Alias 設定により、現在 /blog でブログアプリケーションは動作しているが、CakePHP に付属している初期状態の .htaccess は RewriteBase の記述がないため、そのままでは /blog 以下にリライトされない。そこで、.htaccess に RewriteBase を追加する。
blog/.htaccess に以下を追加:
RewriteBase /blog
blog/app/.htaccess に以下を追加:
RewriteBase /blog/app
blog/app/webroot/.htaccess に以下を追加:
RewriteBase /blog/app/webroot
以上で正しくリライトされるようになり、CSS や画像が表示された。