Capistrano + Nginx + Passenger = 403

Capistrano + Nginx + Passenger = 403

我也在 stackoverflow 上问过这个问题,但仍然没有收到任何能帮助我解决这个问题的答案。到目前为止,我已经花了将近一周的时间试图解决这个问题,但没有任何进展。这个问题似乎很常见,但我在网上找到的解决方案都对我不起作用。我的一个朋友实际上正在创建相同的设置,他也遇到了同样的问题。

几天后,我被 403 错误困扰,我开始使用本教程重新开始: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. 我用右心室在服务器上。版本是1.2.2
  5. 我以前使用的是 ruby​​-1.9.2-p0 [ i386 ],但根据上面列出的教程,我切换到了ree-1.8.7-2010.02 [ i386 ]
  6. 跑步 '哪个红宝石' 从命令行验证我正在使用 1.8.7,输出如下:/usr/local/rvm/rubies/ree-1.8.7-2010.02/bin/ruby
  7. 乘客-v打印以下内容:Phusion Passenger 版本 3.0.2
  8. 运行“nginx -v”时,系统会提示我找不到命令 nginx。由于我可以使用 nginx 来提供静态文件,因此服务器肯定存在并且正在运行,但这可能与我的问题有关。
  9. 我有两个用户处理安装。我用它来安装所有东西,部署者这是我专门为部署我的应用程序而创建的用户
  10. 我的 Web 应用程序目录位于部署者用户的主目录中,如下所示:/home/deployer/webapps/mysite.com/public
  11. 根据 Capistrano 的默认部署,名为 current 的符号链接在公共文件夹中创建,并且指向 /home/deployer/webapps/mysite.com/public/releases/most_current_release
  12. 我已将部署程序目录递归 chmodded 为 777
  13. /选择/nginx权限:rwxr-xr-x
  14. /usr/local/rvm/gems/ree-1.8.7-2010.02/gems/passenger-3.0.2权限:读写权限
  15. 我的 nginx 配置文件经历了近乎永恒的变化,但目前看起来像这样:

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

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 中,它就会呈现。但 rails 不起作用。

基本上就是这样。此时,我几乎已经用尽了所有能想到的解决方案。我是一名程序员,绝对不是系统管理员,所以我 99% 确定这与我设置的权限有关,但我无论如何也想不出在哪里。

如果有人能帮忙,我将不胜感激。如果您希望我检查任何特定权限(即组/权限),请同时包含执行这些操作的命令。希望这能帮助将来阅读此帖子的其他人。

如果我可以提供任何其他信息,请告诉我,提前感谢!!!

答案1

请确保运行 nginx 的用户(大多数情况下是 nobody)有权限读取你的主目录;或者修改 nginx.conf,使用其他用户启动工作进程。

答案2

嗯:

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

不应该是这个吗?

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

答案3

我将检查以下内容:

你的路径好像有点混乱。

/home/deployer/webapps/mysite.com/public/releases/most_current_release

应该看起来像

/home/deployer/webapps/mysite.com/live/current/public

/home/deployer/webapps/mysite.com/live/current

应该链接到

/home/deployer/webapps/mysite.com/live/releases/most_current_release

通常 capistrano 目录结构如下

  • [部署到]
  • [部署到]/发布
  • [部署到]/发布/20080819001122
  • [部署到]/发布/...
  • [部署到]/共享
  • [deploy_to]/共享/日志
  • [部署到]/共享/pids
  • [deploy_to]/共享/系统
  • [deploy_to]/当前链接到 -> [deploy_to]/releases/20100819001122

其中 deploy_to 是你的/home/deployer/webapps/mysite.com/live

希望能帮助到你

相关内容