好的,所以这个问题肯定已经问过几十次了,但老实说我经历了所有类似的问题,这些问题都与我的问题无关。
所以有一点历史和配置 Rails 3 app,Passenger + Nginx 3作为生产服务器
我目前正在通过bash脚本部署我的生产Rails 3应用程序,基本上每次克隆git repo并做一些魔术,它有问题所以我们决定迁移到Capistrano。
编写deploy.rb脚本,指定的共享文件夹,首先在测试服务器上启动它,并设法使其全部正常运行。
现在我为生产服务器执行相同的操作,通过Capistrano将其部署到我的手动bash脚本文件夹中,以便它们不会以任何方式发生冲突,从
更改nginx rootroot /var/www/public;
到
root /var/fruby/current/public;
重新启动nginx,我在日志中收到403错误和以下记录。
2014/06/08 18:28:32 [error] 5239#0: *1 directory index of "/var/fruby/current/public/" is forbidden, client: 109.187.177.116, server: example.com, request: "GET / HTTP/1.1", host: "example.com", referrer: ""
由于乘客配置没有改变,可以安全地假设问题出现在文件夹权限的某个地方,但我老实说似乎无法确定问题所在。权限所以所有者真的看起来是一样的对我来说,也许你可以指出我正确的方向?
它必须与乘客有关,因为如果我用rails手动启动应用程序,它会很好地启动。
/opt/nginx/conf/nginx.conf
在http块内:
passenger_root /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.18;
passenger_ruby /usr/local/bin/ruby;
proxy_read_timeout 640;
服务器块:
server {
listen 443;
server_name example.com;
ssl on;
ssl_certificate /opt/nginx/conf/certs/example.com.crt;
ssl_certificate_key /opt/nginx/conf/certs/example.com.key.nopass;
charset utf-8;
#root /var/www/public; # Old directory my bash script deployed to
root /var/fruby/current/public; # New directory, capistrano deploys to
passenger_enabled on;
rails_env production;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
现在fruby文件夹具有以下权限:
drwxr-xr-x 5 root root 4096 Jun 8 18:56 fruby/
在fruby文件夹里面
drwxr-xr-x 5 root root 4096 Jun 8 18:56 ./
drwxr-xr-x 17 root root 4096 Jun 8 17:31 ../
lrwxrwxrwx 1 root root 34 Jun 8 18:56 current -> /var/fruby/releases/20140608145412/
drwxr-xr-x 4 root root 4096 Jun 8 18:54 releases/
drwxr-xr-x 7 root root 4096 Jun 8 17:46 repo/
-rw-r--r-- 1 root root 170 Jun 8 18:56 revisions.log
drwxr-xr-x 7 root root 4096 Jun 8 17:47 shared/
内部共享文件夹
drwxr-xr-x 7 root root 4096 Jun 8 17:47 ./
drwxr-xr-x 5 root root 4096 Jun 8 18:56 ../
drwxr-xr-x 2 root root 4096 Jun 8 17:49 bin/
drwxr-xr-x 3 root root 4096 Jun 8 17:47 bundle/
drwxr-xr-x 2 root root 4096 Jun 8 17:51 log/
drwxr-xr-x 10 root root 4096 Jun 8 17:24 public/
drwxr-xr-x 6 nobody nogroup 4096 Jun 8 18:56 tmp/
一切似乎都很好,几乎相同的权限,生产服务器上有。
如果您需要更多输出,请告诉我。
非常感谢任何帮助!
答案 0 :(得分:0)
通过将Passenger更新到4.0.44并重新编译nginx(再次运行 passenger-install-nginx-module )来管理解决此问题,显然这是我测试的测试服务器的唯一区别最初。
我跑来解决问题的命令:
user@host-$: chmod 777 -R /tmp
user@host-$: chmod o+t -R /tmp
user@host-$: gem install passenger
user@host-$: passenger-install-nginx-module
前两个命令是这个答案(Getting remove_entry_secure error while using ruby application)
的特征