Capistrano + Nginx + Passenger = 403

我也问过在stackoverflow,但仍然没有收到任何帮助我解决这个问题的答案。 为了解决这个问题,我花了差不多一个星期的时间,而且我还没有取得任何进展。 看来这个问题很常见,但是我在网上find的解决scheme都没有为我工作。 我的一个好友实际上正在创造相同的设置,而他也有同样的问题。

经过几天的403错误,我开始使用这个教程: http : //blog.ninjahideout.com/posts/a-guide-to-a-nginx-passenger-and-rvm-server

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

这基本上是我正在做的事情。

  1. 我在linode.com上有一个VPS账户
  2. 服务器操作系统是Ubuntu 10.04
  3. 雪豹10.6.6本地操作系统(应该不会有问题,但只是你知道)用于部署与Capistrano
  4. 我在服务器上使用RVM版本是1.2.2
  5. 我之前在ruby-1.9.2-p0 [i386]上,但根据上面列出的教程,我切换到了ree-1.8.7-2010.02 [i386]
  6. 从命令行运行' ruby 'validation我使用的是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 app目录位于部署者用户的主目录中,如下所示: /home/deployer/webapps/mysite.com/public
  11. 按照Capistrano默认部署,在公用文件夹中创build一个名为current符号链接 ,并指向/home/deployer/webapps/mysite.com/public/releases/most_current_release
  12. 我已经recursion地将部署者目录chmod到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. 我的nginxconfiguration文件已经经历了短暂的永恒变化,但目前看起来像这样:

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

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中,然后渲染。 但铁轨没有工作。

基本上就是这样。 在这一点上,我几乎完全用尽了所有可能的解决scheme尝试,我能想到的。 我是程序员,绝对不是系统pipe理员,所以我99%肯定这与我已经build立的权限有关,但是对于我来说,我只是无法弄清楚在哪里。

如果任何人都可以帮助,我真的很感激。 如果有什么特定的许可要你检查(比如组/许可),你能不能包括这些命令呢? 希望这将有助于未来阅读这篇文章的其他人。

让我知道,如果有任何其他信息,我可以提供,并提前感谢!

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

HM:

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

难道不是这个吗?

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

我会检查以下内容:

你的path似乎被搞砸了。

/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目录结构如下

  • [deploy_to]
  • [deploy_to] /释放
  • [deploy_to] /释放/ 20080819001122
  • [deploy_to] /发行/ …
  • [deploy_to] /共享
  • [deploy_to] /共享/日志
  • [deploy_to] /共享/ PID的
  • [deploy_to] /共享/系统
  • [deploy_to] /当前链接到 – > [deploy_to] / releases / 20100819001122

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

希望能帮助到你