我也在 stackoverflow 上问过这个问题,但仍然没有收到任何能帮助我解决这个问题的答案。到目前为止,我已经花了将近一周的时间试图解决这个问题,但没有任何进展。这个问题似乎很常见,但我在网上找到的解决方案都对我不起作用。我的一个朋友实际上正在创建相同的设置,他也遇到了同样的问题。
几天后,我被 403 错误困扰,我开始使用本教程重新开始:http://blog.ninjahideout.com/posts/a-guide-to-a-nginx-passenger-and-rvm-server
我曾希望按照本教程从头开始会成功,但没成功。无论如何,如果您查看教程,您可以看到我采取了哪些步骤。
这基本上就是我正在做的事情。
- 我在 linode.com 上有一个 VPS 帐户
- 服务器操作系统Ubuntu 10.04
- 用于与 Capistrano 一起部署的本地操作系统(应该不重要,但您要知道)是 Snow Leopard 10.6.6
- 我用右心室在服务器上。版本是1.2.2
- 我以前使用的是 ruby-1.9.2-p0 [ i386 ],但根据上面列出的教程,我切换到了ree-1.8.7-2010.02 [ i386 ]。
- 跑步 '哪个红宝石' 从命令行验证我正在使用 1.8.7,输出如下:/usr/local/rvm/rubies/ree-1.8.7-2010.02/bin/ruby
- 乘客-v打印以下内容:Phusion Passenger 版本 3.0.2
- 运行“nginx -v”时,系统会提示我找不到命令 nginx。由于我可以使用 nginx 来提供静态文件,因此服务器肯定存在并且正在运行,但这可能与我的问题有关。
- 我有两个用户处理安装。根我用它来安装所有东西,部署者这是我专门为部署我的应用程序而创建的用户
- 我的 Web 应用程序目录位于部署者用户的主目录中,如下所示:/home/deployer/webapps/mysite.com/public
- 根据 Capistrano 的默认部署,名为 current 的符号链接在公共文件夹中创建,并且指向 /home/deployer/webapps/mysite.com/public/releases/most_current_release
- 我已将部署程序目录递归 chmodded 为 777
- /选择/nginx权限:rwxr-xr-x
- /usr/local/rvm/gems/ree-1.8.7-2010.02/gems/passenger-3.0.2权限:读写权限
- 我的 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
希望能帮助到你