Проблема запуска Пассажира с Nginx - PullRequest
1 голос
/ 18 апреля 2011

Я только что установил Passenger с помощью Nginx, и, кажется, он отлично работает, но когда я запускаю его, я пытаюсь запустить его:

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 ]

3 голосов
/ 03 мая 2012

Эта ошибка вызвана тем, что пользователь 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 вы запускаете оболочку как пользователь nginx . А с помощью команды cat вы можете смоделировать чтение файла.

2 голосов
/ 18 апреля 2011

Попробуйте это:

sudo passenger start -e production
1 голос
/ 18 апреля 2011

, поскольку указанный вами путь находится в / root (/ root / rails_apps / myapp / public), nginx должен иметь достаточно разрешений:

user root;в nginx.conf

вы также должны запустить nginx от имени суперпользователя (sudo)

, но может быть лучше просто переместить ваше приложение rails куда-нибудь в каталог пользователя и предоставить необходимые разрешения пользователю nginx по умолчанию«www-data»

user www-data;
...