好吧,这个问题肯定已经被问过几十次了,但我真的把所有类似的问题都看过了,这些问题都和我的问题无关。
讲一点历史和配置Rails 3应用,Passenger + Nginx 3作为生产服务器
我目前正在通过bash脚本部署我的Rails 3生产应用程序,基本上每次都克隆git repo并做一些神奇的事情,它有它的问题,所以我们决定迁移到Capistrano。
编写部署。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: ""
由于乘客配置没有改变,可以放心地假设问题出在文件夹权限的某个地方,但我真的无法确定问题出在哪里。权限,所有者对我来说真的是一样的吗,也许你可以给我指出正确的方向?
它必须和passenger有关,因为如果我用rails s手动启动应用程序,它启动得很漂亮。
/opt/nginx/conf/nginx.conf
http block内部:
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/
目录
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/
一切似乎都很好,几乎相同的权限,有生产服务器。
如果你需要更多的输出,请告诉我。
任何帮助都非常感谢!
通过将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
前两个命令是这个答案的核心(在使用ruby应用程序时获得remove_entry_secure错误)