开发者

Problem starting Passenger with Nginx

I have just setup Passenger with Nginx and it seems to install fine but when I run it I try to start it by:

passenger start -e production

I get:

=============== 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"

and I get "Unable to connect" when I try to access my site in the browser.

Here is configuration in nginx.conf

   server {
      listen 80;
      server_name myapp.com;
      root /root/rails_apps/myapp/public;   # <--- be sure to point to 'public'!
      passenger_enabled on;
   }

any ideas?


This error seems caused because the user of nginx cannot access the mentioned file. It can be caused not only if the /root/rails_apps/myapp/public is not have a correct permission, but even if one of the parent directories does not have that!

In your nginx.conf you can see something like:

user nginx;

http {
    # blah.
}

Sometimes parameter of the user can be different. Be sure to all folder is available by this user in the path. You can check it by sudo -Hu nginx /bin/bash -l and cat /root/rails_apps/myapp/public/index.html. Test and test it again with this command until you cannot see the content of the file.

A little explanation: with that sudo command you start a shell as an user nginx. And with cat command you can simulate the file reading.


Try this:

sudo passenger start -e production


since the path you specified is in /root (/root/rails_apps/myapp/public), nginx should have enough permissions:

user root; in nginx.conf

you should also start nginx as superuser ( sudo )

but it might be better to just move your rails app somewhere to your user directory and grant needed permissions to default nginx user 'www-data'

user www-data;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜