rails app部署后出现403错误(apache + passenger)

时间:2012-02-28 16:10:50

标签: ruby-on-rails apache passenger capistrano http-status-code-403

这是我的第一个rails应用程序部署,所以请原谅我,如果这个问题的解决方案很明显......每当我尝试在浏览器中加载我的rails应用程序时,我都会收到403错误(禁止)。部署(使用capistrano)终于没有错误,但似乎有一些关于我的apache或乘客设置的问题。似乎apache试图从公共文件夹加载索引文件而不是让乘客干预。当我在浏览器中加载应用程序域时,我甚至没有获得乘客错误屏幕。我刚收到一条禁止的消息。还有其他人遇到过同样的问题吗?

这是实际的错误日志:

[Mon Feb 27 10:03:12 2012] [error] [client xxx.xxx.xxx.xx] Directory index forbidden by Options directive: /usr/local/www/sites/project.example.ca/public/

我假设这基本上意味着它出错了,因为它无法找到index.html文件,但Passenger应该在尝试查找索引文件之前拦截它。所以这可能是一个apache错误,但虚拟主机是根据教程配置的......

我正在运行rails 3.1.3,ruby 1.9.2-p290,capistrano 2.1.12,Apache 2.2,rvm 1.10.2以及安装脚本大约一个月前安装的任何版本的乘客。我在设置乘客时遵循了本指南:http://beginrescueend.com/integration/passenger/

非常感谢任何帮助!感觉就像我一直试图永久部署这个应用程序。

这是我的部署文件,以防它有用:

$:.unshift(File.expand_path('./lib', ENV['rvm_path'])) 
require "rvm/capistrano"

set :application, "Project"

set :scm, "git"
set :repository,  "ssh://git@server.project.ca/usr/local/git_root/project.git"
set :user, "deploy"

#set :rvm_bin_path, "/usr/local/rvm/bin"
set :rvm_ruby_string, "ruby-1.9.2-p290@project"
set :normalize_asset_timestamps, false

ssh_options[:forward_agent] = true

set :branch, "master"

set :deploy_via, :remote_cache

set :deploy_to, "/usr/local/www/sites/project.example.ca/public/"

set :use_sudo, false

set :domain, 'project.example.ca'

role :app, domain
role :web, domain
role :db,  domain, :primary => true

1 个答案:

答案 0 :(得分:0)

我们发现了403错误。我们正在部署到/usr/local/sites/www/project.example.ca/public。但是,capistrano部署的方式,实际应用程序位于/usr/local/sites/www/project.example.ca/public/current/public。我吹走了那里已经存在的所有东西并调整了deploy.rb以指向/usr/local/www/sites/project.example.ca,并将虚拟主机更改为指向/usr/local/sites/www/project.example .ca / current / public,现在我们至少得到一个Phusion Passenger错误页面。