我刚刚使用Nginx设置了Passenger,它似乎安装得很好,但是当我运行它时,我尝试启动它:
passenger start -e production
我明白了:
=============== Phusion Passenger Standalone web server started ===============
PID file: /root/rails_apps/myapp/tmp/pids/passenger.3000.pid
Log file: /root/rails_apps/myapp/log/passenger.3000.log
Environment: production
Accessible via: http://0.0.0.0:3000/
You can stop Phusion Passenger Standalone by pressing Ctrl-C.
===============================================================================
2011/04/18 07:17:27 [error] 9125#0: *4 "/root/rails_apps/myapp/public/index.html" is forbidden (13: Permission denied), client: 127.0.0.1, server: _, request: "HEAD / HTTP/1.1", host: "0.0.0.0"
当我尝试在浏览器中访问我的网站时,我收到“无法连接”。
这是nginx.conf中的配置
server {
listen 80;
server_name myapp.com;
root /root/rails_apps/myapp/public; # <--- be sure to point to 'public'!
passenger_enabled on;
}
任何想法?
答案 0 :(得分:3)
这个错误似乎是因为nginx的用户无法访问提到的文件。它不仅可能是因为/ root / rails_apps / myapp / public没有正确的权限,而且即使其中一个父目录没有这个权限!
在你的nginx.conf中你可以看到类似的东西:
user nginx;
http {
# blah.
}
有时user
的参数可能不同。请确保此用户在路径中提供所有文件夹。
您可以sudo -Hu nginx /bin/bash -l
和cat /root/rails_apps/myapp/public/index.html
进行检查。使用此命令再次测试并测试它,直到您看不到文件的内容。
一点解释:使用sudo命令启动shell作为用户 nginx 。使用cat
命令,您可以模拟文件读取。
答案 1 :(得分:2)
试试这个:
sudo passenger start -e production
答案 2 :(得分:1)
由于您指定的路径位于/ root(/ root / rails_apps / myapp / public),因此nginx应具有足够的权限:
user root
;在nginx.conf中
你也应该以超级用户(sudo)
启动nginx但是将rails应用程序移动到您的用户目录并向默认的nginx用户'www-data'授予所需的权限可能会更好
user www-data;