人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Rails + Passanger が動きません。原因わかりますでしょうか?

Ubuntu 8.04
ruby 1.8.6
rails 2.3.5
gem 1.3.6
passanger (2.2.11)
Apache 2.2.8


WEBrick を起動し、
http://localhost:3000/hello/index.html
へアクセスすると成功するのですが、


Apache の
http://hello.XXX.com/hello/index.html
は 404 Not Found になってしまいます。


エラーログ
[error] File does not exist: /tmp/hello/hello


http://hello.XXX.com/
は正しく Welcome aboard が表示されます。


操作した手順を
http://d.hatena.ne.jp/nannde/20100506/1273159310
に記載しました。


どこが間違っているのかご指摘いただければ幸いです。


●質問者: nannde
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Apache DOES gem Hello NOT FOUND
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ● Committeeman
●19ポイント

localhost:3000/hello/index.html はポート3000を直接指定しているから動く

hello.XXX.com/hello/index.html はポート番号の指定がないためデフォルトの80へ行ってしまう


hello.XXX.com:3000/hello/index.html で動作を再確認


3000を指定せずとも動くようにする例はつぎのページを参照

[Ruby] ApacheとWebrickを連携してrailsアプリを公開する

http://maskana.homedns.org/pg/memos/237

◎質問者からの返答

ありがとうございます!

> hello.XXX.com:3000/hello/index.html で動作を再確認

3000番ポートは開けていないので...

Passangerが簡単で速いという評判なので期待しているのですが、

ダメなら教えていただいた方法も検討してみます。

ありがとうございます。


2 ● Y.Namikawa / id:rx7
●18ポイント

的外れだったら申し訳ないのですが、Apacheの設定で、


RailsBaseURI /hello


が足りていない気がします。


あと、ひょっとしたら、DocumentRoot直下の"hello"というディレクトリ(SymlinkでもOK)の存在が必要で、

それがRAILS_ROOTのpublicディレクトリであることが必要かもしれません。

今の設定ファイルのままいくのであれば、


ln -s /tmp/hello/public /tmp/hello/public/hello


という感じでしょうか。(少し強引なやり方なので、うまくいくか心配ですが)

試してみてください。

◎質問者からの返答

ご回答ありがとうございます!!

御答えが仮に正解だとすると、コントローラを作るごとに設定が必要となりそうですね(^^;;

またご報告します。取り急ぎ御礼まで。


3 ● Committeeman
●19ポイント

>3000番ポートは開けていない


そのための設定例が回答1のリンク先

80番をサーバ内部で3000番に振り替えている

apache側の設定なのでWebrickだろうとpassangerだろうと同じ


同様の方法でバーチャルホストのほうに設定するならこちらの方の日記がわかりやすい

http://d.hatena.ne.jp/hiratake55/20090704

◎質問者からの返答

フォローありがとうございます!!

>そのための設定例が回答1のリンク先

>80番をサーバ内部で3000番に振り替えている

なるほど。開けなくても良いのですね。

Apacheの設定ファイルに原因がありそうですね。

トライしてまたご報告します。取り急ぎ御礼まで。

ありがとうございますm(_ _)m


4 ● Y.Namikawa / id:rx7
●18ポイント

すみません、/helloサブディレクトリで、稼動させる方法と勘違いして、回答してしまいました。


では、

RailsBaseURI /

を設定されてみてはいかがでしょうか。


あとは、問題の切り分けとして、".html"という文字列を

erbファイルの文字列から外す(コントローラ等も修正)とどうなるでしょうか?

ひょっとしたら、拡張子に対して、Apacheがおせっかいしているのかな、とも思いまして。

◎質問者からの返答

アドバイスありがとうございます。

結局、私の手順に特に誤りがあるわけではないようですね。

困りました...


5 ● studiocherry
●18ポイント

細かい点ですが、「/var/log/apache2/error-hello.log」のエラーログは、

> [error] File does not exist: /tmp/hello/hello


と書かれていますが、/tmp/hello/public じゃなくて、/tmp/hello/hello って、でていますか?



このエラーメッセージが、正しい(このままlogに記録されている)のであれば、ディレクトリやファイルが、「ない」or「Apache が、アクセスできない」ことが、原因と考えられますので、以下の点について教えてください。

1. httpd.conf の DocumentRoot や Directory に 記載されている path は、正しいでしょうか?

2. このディレクトリ or ファイルは、存在していますか?

3. 所有者やパーミッションは、どうなっていますか?

◎質問者からの返答

御回答ありがとうございます!!

すみません!

おっしゃるとおり /tmp/hello/public/hello です。

* error-hello.log

[Sat May 08 00:12:07 2010] [error] [client XXX.XXX.XXX.XXX] File does not exist: /tmp/hello/public/hello, referer: http://hello.XXX.com/


> 1. httpd.conf の DocumentRoot や Directory に 記載されている path は、正しいでしょうか?

はい

>2. このディレクトリ or ファイルは、存在していますか?

はい

httpd.conf(専用ファイルhello)内の DocumentRoot の値をコピーして、

$ ls -al <貼り付け>/

#=> /tmp/hello/public/ 内がリストされます。

Directory に記載のパスも同様に確認しました。


>3. 所有者やパーミッションは、どうなっていますか?

nannde: root です。


http://hello.XXX.com/ へのアクセスでは /tmp/hello/public/index.html が正しく表示されます。

* access-hello.log

x.x.x.x - - [08/May/2010:00:12:01 +0900] "GET / HTTP/1.1" 200 7466

x.x.x.x - - [08/May/2010:00:12:01 +0900] "GET /javascripts/effects.js HTTP/1.1" 200 38675

x.x.x.x - - [08/May/2010:00:12:01 +0900] "GET /javascripts/prototype.js HTTP/1.1" 200 129738

x.x.x.x - - [08/May/2010:00:12:02 +0900] "GET /images/rails.png HTTP/1.1" 200 6646

x.x.x.x - - [08/May/2010:00:12:07 +0900] "GET /hello/index.html HTTP/1.1" 404 214


public/hello/index.html というファイルは実在しません。

public/.htaccess も存在しません。

これでどうやって controller=>hello, action=>index を解決するのかは全く知りませんが、

それが Passenger のお仕事、と解釈しております。


どこが間違っているのでしょうか(TT)


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ