Capistrano + Nginx + Passenger = 403

Я также спрашивал об этом в stackoverflow, но до сих пор не получил ни одного ответа, который помог бы мне решить эту проблему. Я потратил почти неделю, пытаясь решить эту проблему, и я просто не продвигаюсь вперед. Кажется, что эта проблема довольно распространена, но ни одно из найденных мной решений не подойдет мне. Мой приятель на самом деле создает ту же установку, и у него та же проблема.

После нескольких дней, застрявших с ошибкой 403, я снова начал использовать этот учебник: http://blog.ninjahideout.com/posts/a-guide-to-a-nginx-passenger-and-rvm-server

Я надеялся, что начать с нуля, используя этот учебник, получится, но без кубиков. В любом случае, если вы посмотрите учебник, вы увидите, какие шаги я предпринял.

Вот по сути то, что у меня происходит.

  1. У меня есть аккаунт VPS на linode.com
  2. Серверная ОС Ubuntu 10.04
  3. Snow Leopard 10.6.6. Для развертывания с Capistrano используется локальная ОС (не должна иметь значения, но только чтобы вы знали).
  4. Я использую RVM на сервере. Версия 1.2.2
  5. Ранее я работал на ruby-1.9.2-p0 [ i386 ], но согласно приведенному выше уроку я переключился на ree-1.8.7-2010.02 [i386].
  6. Запуск ' which ruby ' из командной строки подтверждает, что я использую 1.8.7 со следующим выводом: /usr/local/rvm/rubies/ree-1.8.7-2010.02/bin/ruby
  7. пассажир -v печатает следующее: Phusion Passenger версия 3.0.2
  8. Запуск 'nginx -v' дает мне сообщение о том, что команда nginx не может быть найдена. Сервер определенно работает и работает, так как я могу использовать nginx для обслуживания статических файлов, но это может быть связано с моей проблемой.
  9. У меня есть два пользователя, занимающиеся установкой. root, который я использовал для установки всего, и deployer, который является пользователем, которого я специально создал для развертывания своих приложений
  10. Мой каталог веб-приложений находится в домашнем каталоге пользователя развертывания следующим образом: /home/deployer/webapps/mysite.com/public
  11. При развертывании Capistrano по умолчанию в общей папке создается символическая ссылка с именем current, которая указывает на /home/deployer/webapps/mysite.com/public/releases/most_current_release.
  12. Я chmodded каталог развертывания рекурсивно до 777
  13. / opt / nginx разрешения: rwxr-xr-x
  14. /usr/local/rvm/gems/ree-1.8.7-2010.02/gems/passenger-3.0.2 permissions: rwxrwsrwx
  15. Мой конфигурационный файл nginx претерпел лишь небольшие изменения, но в настоящее время выглядит так:

================================================== ================================

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    passenger_root /usr/local/rvm/gems/ree-1.8.7-2010.02/gems/passenger-3.0.2;
    passenger_ruby /usr/local/rvm/bin/passenger_ruby;

    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {
       # listen      *:80;
        server_name mysite.com www.mysite.com;
        root   /home/deployer/webapps/mysite.com/public/current;

        passenger_enabled on;
        passenger_friendly_error_pages on;


        access_log logs/mysite.com/server.log;
        error_log logs/mysite.com/error.log info;

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

================================================== ================================

Я подпрыгиваю nginx, попадаю на сайт и бум. 403, и журналы говорят, что индекс каталога / home / deployer... запрещен

Как говорили другие с подобной проблемой, вы можете поместить index.html в public / Releases / Current_release, и он будет отображаться. Но рельсы не работают.

Это в основном это. На данный момент я почти полностью исчерпал каждую возможную попытку решения, о которой я могу думать. Я программист и определенно не являюсь системным администратором, поэтому я на 99% уверен, что это как-то связано с разрешениями, которые я использовал, но для своей жизни я просто не могу понять, где.

Если кто-то может помочь, я был бы очень признателен. Если есть какие-то конкретные разрешения, которые вы хотите, чтобы я проверил (например, группы / разрешения), не могли бы вы включить команды для этого. Надеемся, что это поможет другим в будущем, кто прочитает этот пост.

Дайте мне знать, если есть какая-либо другая информация, которую я могу предоставить, и спасибо заранее!!!

3 ответа

Пожалуйста, убедитесь, что пользователь nginx работает, в большинстве случаев это никто, имеет разрешение на чтение вашего домашнего каталога; или измените nginx.conf, используйте другого пользователя для запуска рабочего процесса.

Hm:

root   /home/deployer/webapps/mysite.com/public/current;

Не должно ли это быть этим?

root   /home/deployer/webapps/mysite.com/current/public;

Я бы проверил следующее:

Ваши пути, кажется, перепутаны.

/home/deployer/webapps/mysite.com/public/releases/most_current_release

должен выглядеть так

/home/deployer/webapps/mysite.com/live/current/public

а также

/home/deployer/webapps/mysite.com/live/current

должна быть ссылка на

/home/deployer/webapps/mysite.com/live/releases/most_current_release

Обычно структура каталога Capistrano следующая

  • [Deploy_to]
  • [Deploy_to] / релизы
  • [Deploy_to] / выпуски / 20080819001122
  • [Deploy_to] / выпуски /...
  • [Deploy_to] / общий
  • [Deploy_to] / общий / журнал
  • [Deploy_to] / общий / PIDs
  • [Deploy_to] / общая / система
  • [deploy_to] / текущая ссылка на -> [deploy_to]/ Releases/20100819001122

где deploy_to - это ваш /home/deployer/webapps/mysite.com/live

Надеюсь, поможет

Другие вопросы по тегам