0

rvm事前にインストールしていました。そして、パッセンジャーをパッケージ ( nginx-full およびパッセンジャーruby) からインストールすることにし、インストール済みのものを使用したいと思いrvmます。しかし、どういうわけかうまくいきません。sinatra私が使用しているテストアプリは次のとおりです( ~yuri/a1/app.rb):

require 'rubygems'
require 'sinatra'

get '/' do
  "Hello and Goodbye"
end

~yuri/a1/config.ru:

require 'rubygems'
require 'sinatra'

require './app.rb'
run Sinatra::Application

nginx.conf:

http {
    ...
    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
        # the paths in the above file point out to debian repository's ruby version
    server {
        server_name a1;
        root   /home/yuri/a1;
        access_log   /var/log/nginx/a1-access.log;
        error_log   /var/log/nginx/a1-error.log;
        passenger_enabled   on;
        passenger_ruby   /home/yuri/.rvm/wrappers/ruby-1.9.3-p385@a1/ruby;
    }
}

しかし、私がw3m http://a1 access.log言うとき:

127.0.0.1 - - [12/Sep/2013:21:14:58 +0300] "GET / HTTP/1.0" 403 168 "-" "w3m/0.5.2+cvs-1.1027"

error.log:

2013/09/12 21:14:58 [error] 27622#0: *1 directory index of "/home/yuri/tr/" is forbidden, client: 127.0.0.1, server: tr, request: "GET / HTTP/1.0", host: "a1"

次のように実行すると、アプリは機能しますrvm ruby-1.9.3-p385@a1 && ruby app.rb

そこで何が起こっているかを追跡する方法はありますか?またはそれを機能させる方法は?

4

2 に答える 2

5

passengerは、アプリケーション ディレクトリが特定のレイアウトを持つことを想定しています。特に、config.ruドキュメント ルートに対して 1 レベル上に存在する必要があります。あれは:

/etc/nignx/nginx.conf:

...
http {
    ...
    passenger_root   /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    server {
        server_name a1;
        root   /home/yuri/a1/public;
        access_log   /var/log/nginx/a1-access.log;
        error_log   /var/log/nginx/a1-error.log;
        passenger_ruby   /home/yuri/.rvm/wrappers/ruby-1.9.3-p385@a1/ruby;
        passenger_enabled   on;
    }
}

~yuri/a1/app.rb:

require 'sinatra'
get '/' do
  "Hello World!"
end

~yuri/a1/config.ru:

require './app'
run Sinatra::Application

と:

$ rvm install 1.9.3-p385
...
$ rvm --create use 1.9.3-p385@a1
...
$ curl http://a1
Hello World!
于 2013-09-12T23:58:29.970 に答える
2

aptアプローチを使用して、Ubuntu Preciseでパッセンジャー4.0.17をセットアップしました。

これが私のために働いたものです。

/etc/nginx/nginx.conf で

    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    passenger_ruby /usr/local/rvm/wrappers/ruby-2.0.0-p247/ruby;

Passenger_ruby を server ブロックの外に移動してみてください。

幸運を

于 2013-09-12T22:55:36.650 に答える