【发布时间】:2013-09-12 18:22:46
【问题描述】:
我已经预先安装了rvm。我决定从一个包 (nginx-full and passenger) 安装乘客,并希望使用与rvm 一起安装的ruby。但不知何故,它不起作用。这是我正在使用的测试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。
有没有办法追踪那里发生的事情?或者如何让它发挥作用?
【问题讨论】:
-
您在 errors.log 中看到了什么?另外,您是否检查过 /home/yuri 是否可以被 Nginx 运行的用户 www-data 访问?
-
我已经指定了我在
errors.log中看到的内容:目录索引错误。是的,www-data可以读取/home/yuri/a1中的文件(这是用户nginx运行的身份)。 -
不是 /home/yuri/a1,/home/yuri。 所有父目录必须也可访问。你也检查过吗?
-
哦,我现在明白了。您的“根”必须指向“公共”目录。
-
@Hongli 是
passenger的要求吗?或者可能是rack的?
标签: ruby nginx sinatra rvm passenger