使用Nginx启动Passenger的问题

时间:2011-04-18 07:23:17

标签: ruby-on-rails nginx passenger

我刚刚使用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;
   }

任何想法?

3 个答案:

答案 0 :(得分:3)

这个错误似乎是因为nginx的用户无法访问提到的文件。它不仅可能是因为/ root / rails_apps / myapp / public没有正确的权限,而且即使其中一个父目录没有这个权限!

在你的nginx.conf中你可以看到类似的东西:

user nginx;

http {
    # blah.
}

有时user的参数可能不同。请确保此用户在路径中提供所有文件夹。 您可以sudo -Hu nginx /bin/bash -lcat /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;
相关问题