【问题标题】:Capistrano + Nginx + Passenger = 403Capistrano + Nginx + 乘客 = 403
【发布时间】:2011-06-13 07:32:12
【问题描述】:

过去几天我一直在尝试解决这个问题,但我没有取得任何进展。我实际上只是专门创建了一个 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/bin/ruby
  7. passenger -v 打印以下内容:Phusion Passenger 版本 3.0.2
  8. 我不确定如何判断我的 nginx 版本是什么,但它应该是我昨天通过上面教程中列出的乘客安装程序命令安装的最新版本。
  9. 我有 两个用户 处理安装。 root 是我用来安装所有内容的用户,而 deployer 是我专门为部署我的应用程序而创建的用户
  10. 我的网络应用程序目录位于部署者用户的主目录中,如下所示:/home/deployer/webapps/mysite.com/public
  11. 根据 Capistrano 默认部署,在公共文件夹中创建一个名为 current 的符号链接,并指向 /home/deployer/webapps/mysite.com/public/releases/most_current_release
  12. 我已将部署程序目录递归地修改为 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 配置文件经历了短暂的变化,但目前看起来像这样:

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

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% 确信这与我已经获得的权限有关,但对于我的一生,我就是不知道在哪里。

如果有人可以提供帮助,我将不胜感激。如果您希望我检查任何特定权限(即组/权限),您能否也包括执行此操作的命令。希望这对以后阅读这篇文章的其他人有所帮助。

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

【问题讨论】:

  • 有人吗?我太难了。接近完全放弃 nginx。帮助?请问?

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    反转根指令的公共和当前。

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

    【讨论】:

      【解决方案3】:

      'nginx -v' 输出版本(或者,客户端,在浏览器中查看标题)。

      Slicehost 有关于这类事情的优秀文章,您可以将其与您自己的配置进行比较,甚至从一开始就遵循。 [我也使用 Linode,但更喜欢 Slicehost 的教程。 ;)]

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

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

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

      【讨论】:

      • 好的,这可能是我的问题的一部分。我尝试运行“nginx -v”并收到以下信息:-bash: nginx: command not found。我认为还有另一种方法可以做到这一点,但现在你说这是对的,也许这指向别的东西?我会再次挖掘这些文章,但老实说,我已经准备好了几乎所有的东西。感谢您的帮助。
      猜你喜欢
      • 1970-01-01
      • 2011-05-31
      • 2018-04-04
      • 2015-10-19
      • 2011-04-26
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      • 2018-12-25
      相关资源
      最近更新 更多