2012-01-25 4 views
2

私はDreamhost仮想プライベートサーバ上にいます。私はSinatraアプリや他のRackアプリを書いたことは一度もありません。私はちょうど実行するHello Worldのアプリを取得しようとしているが、私はエラーで旅客のエラーページを取得しておいてください。NginxとPassengerでSinatraアプリを導入するにはどうすればよいですか?

no such file to load -- rack 

私は、ドメイン/アプリのルートにpublic/tmp/を作成しました。アプリのルートでも

このconfig.ru次のとおりです。私はnginxのドキュメント、Sinatra section上の旅客から引き出さ

require 'rubygems' 
require 'sinatra' 
require 'myapp' 

run Sinatra::Application 

最後に、これはmyapp.rbです。これはSinatraの上部から引っ張ったIntro docです。

# myapp.rb 
require 'sinatra' 

get '/' do 
    'Hello world!' 
end 

これを動作させるにはどうすればよいですか?私は疑う

0 /usr/lib/ruby/1.8/rubygems/custom_require.rb 31 in `gem_original_require' 
1 /usr/lib/ruby/1.8/rubygems/custom_require.rb 31 in `require' 
2 /dh/nginx/passenger/lib/phusion_passenger/rack/application_spawner.rb 145 in `load_rack_app' 

UPDATE:ここでEDIT


は、旅客のエラーページで指定されたスタックトレースの上位3行です私はディスコを持っているvered なぜ乗客はラックを見つけることができませんが、解決策はまだ分かりません。私nginx.confの上部には、この行です:

user dhapache; 

それはその旅客がdhapacheとして、あるいはrootとしてのいずれかの宝石を探していると私はそれがps aux | lessから与えられたプロセスリストに基づいているか分からないと思われます:

root  PassengerNginxHelperServer /dh/nginx/passenger ruby 3 4 0 6 0 300 1 nobody 999 150 /tmp/passenger.19012 
root  Passenger spawn server 
dhapache nginx: worker process 
dhapache nginx: worker process 
root  nginx: master process /dh/nginx/bin/nginx-be -c /dh/nginx/servers/httpd-ps77303/nginx.conf -p /dh/nginx/servers/httpd-ps77303/var/ 

しかし、いずれの場合にもGEMパスのみない宝石がない場所にgem env点でリストアップされました。旅客がそれらの場所で宝石を探しているなら、それは見つからないでしょう。両方の場合においてsudo -u root gem env

/var/lib/gems/1.8 
/dh/apache/.gem/ruby/1.8 

からsudo -u dhapache gem env

/var/lib/gems/1.8 
/root/.gem/ruby/1.8 

宝石パスから

ジェムパスは、最初の(同一の)ディレクトリが空であると記載されている第2のディレクトリが存在しません。

このサーバー設定では、アプリケーションは/home/[username]/[domain]/の下でホストされ、ローカルの宝石は/home/[username]/.gems/にあります。アプリユーザーとしてgem envを実行すると、ローカルのgemパスが表示されます。

地元の宝石を見つけるにはどうすればよいですか?

+0

問題を解決しましたか?ラックは取り付けられていますか?例えば、 'gem query -n rack'は何を表示しますか? –

+0

まだそれを理解していない。ラックマウント(0.8.3、0.6.13) ラックマウント(0.8.3,0.6.13) ラックキャッシュ(1.1) ラックマウント ラック保護(1.2.0)ラック-ssl(1.3.2) ラックテスト(0.6.1,0.5.6) ' –

+0

このファイルがどこにあるか、正しい権限があるかどうかを確認してください。 find/usr/lib/ruby​​/-name rake.rb -exec ls -l '{}' ';' –

答えて

0

BundlerのGemfileを使用してください。 RVMを使用してください。

+2

私はそれに同意しません - それは本当に答えではありません。そして私はずっと前にこの状況をあきらめて、本当のルートアクセス権を持っているRackspaceに移動しました。とにかくありがとう。 –

関連する問題