Capistrano + Nginx + Passenger = 403

时间:2011-01-21 17:37:47

标签: ruby-on-rails-3 nginx capistrano passenger

我花了最近几天试图解决这个问题,而我只是没有取得任何进展。我实际上只是创建了一个stackoverflow帐户专门问这个问题。似乎这个问题很常见,但我发现的解决方案都没有为我解决问题。

昨天我遇到了这个教程:http://blog.ninjahideout.com/posts/a-guide-to-a-nginx-passenger-and-rvm-server

我曾希望从头开始使用本教程可行,但没有骰子。无论哪种方式,如果您查看教程,您可以看到我采取了哪些步骤。

这基本上就是我的目标。

  1. 我在linode.com上有一个VPS帐户
  2. 服务器操作系统 Ubuntu 10.04
  3. 用于与Capistrano一起部署的本地操作系统(无所谓,但你知道)是Snow Leopard 10.6.6
  4. 我在服务器上使用 RVM 版本为1.2.2
  5. 我之前在ruby-1.9.2-p0 [i386],但根据上面列出的教程,我切换到 ree-1.8.7-2010.02 [i386]
  6. 从命令行运行' which ruby​​ '验证我使用1.8.7并使用以下输出: /usr/local/rvm/rubies/ree-1.8.7- 2010.02 /斌/红宝石
  7. passenger -v 打印以下内容: Phusion Passenger版本3.0.2
  8. 我不知道如何判断我的nginx版本是什么,但它应该是最新版本,因为我昨天通过上面教程中列出的乘客安装程序命令安装了它。
  9. 我有两个用户处理安装。我用来安装所有内容的 root ,以及 deployer ,这是我专门为部署我的应用程序而创建的用户
  10. 我的网络应用程序目录位于部署者用户的主目录中,如下所示: /home/deployer/webapps/mysite.com/public
  11. Per Capistrano默认部署,在公共文件夹中创建名为current 的符号链接,指向/home/deployer/webapps/mysite.com/public/releases/most_current_release < /强>
  12. 我已逐步将部署目录chmodded到777
  13. / opt / nginx 权限: rwxr-xr-x
  14. /usr/local/rvm/gems/ree-1.8.7-2010.02/gems/passenger-3.0.2 权限: rwxrwsrwx
  15. 我的nginx配置文件经历了短暂的永恒变化,但目前看起来像这样:
  16. =============================================== ===================================

    worker_processes  1;
    
    events {
        worker_connections  1024;
    }
    
    
    http {
        passenger_root /usr/local/rvm/gems/ree-1.8.7-2010.02/gems/passenger-3.0.2;
        passenger_ruby /usr/local/rvm/bin/passenger_ruby;
    
        include       mime.types;
        default_type  application/octet-stream;
    
        sendfile        on;
    
        keepalive_timeout  65;
    
        server {
           # listen      *:80;
            server_name mysite.com www.mysite.com;
            root   /home/deployer/webapps/mysite.com/public/current;
    
            passenger_enabled on;
            passenger_friendly_error_pages on;
    
    
            access_log logs/mysite.com/server.log;
            error_log logs/mysite.com/error.log info;
    
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    }
    

    =============================================== ===================================

    我反弹nginx,点击网站,然后热潮。 403,日志说 / home / deployer的目录索引...被禁止

    正如其他有类似问题的人所说的那样,你可以将index.html放入public / releases / current_release中并进行渲染。但轨道没有用。

    基本上就是这样。在这一点上,我几乎完全耗尽了我能想到的每一个可能的解决方案尝试。我是一名程序员,绝对不是系统管理员,所以我99%肯定这与我所管理的权限有关,但对于我的生活,我只是无法弄清楚在哪里。

    如果有人可以提供帮助,我真的很感激。如果您希望我检查任何特定权限(即组/权限),您是否也可以包含命令。希望这将有助于将来阅读这篇文章的其他人。

    如果我能提供任何其他信息,请告诉我,并提前致谢!!!

3 个答案:

答案 0 :(得分:1)

反转root指令的public和current。

root /home/deployer/webapps/mysite.com/current/public;

答案 1 :(得分:1)

您应该将部署用户和root添加到rvm组。

sudo usermod -a -G rvm deployer
sudo usermod -a -G rvm root

答案 2 :(得分:0)

'nginx -v'输出版本(或客户端,浏览器中的视图标题)。

Slicehost提供了很好的文章,可以与您自己的配置进行比较,甚至可以从头开始。 [我也使用Linode,但更喜欢Slicehost的教程。 )]

http://articles.slicehost.com/tags/nginx

nginx教程肯定涵盖了权限设置,这听起来就像是你所描述的问题的原因。

他们也有关于Rails和Capistrano的文章。