Capistrano + Nginx + Passenger = 403 - PullRequest
       16

Capistrano + Nginx + Passenger = 403

1 голос
/ 21 января 2011

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

Вчера я наткнулся на этот урок: http://blog.ninjahideout.com/posts/a-guide-to-a-nginx-passenger-and-rvm-server

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

Вот, по сути, то, что я имею в виду.

  1. У меня есть аккаунт VPS на linode.com
  2. Серверная ОС - Ubuntu 10.04
  3. Для развертывания с Capistrano используется локальная ОС (не имеет значения, но только чтобы вы знали) - Snow Leopard 10.6.6
  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 / бен / рубин
  7. passenger -v печатает следующее: Phusion Passenger версия 3.0.2
  8. Я не уверен, как узнать, какая у меня версия nginx, но она должна быть самой последней, поскольку я установил ее вчера с помощью команд установщика для пассажиров, перечисленных в руководстве выше.
  9. У меня два пользователя , занимающихся установкой. root , который я использовал для установки всего, и deployer , который является пользователем, которого я специально создал для развертывания моих приложений
  10. Мой каталог веб-приложений находится в домашнем каталоге пользователя развертывания следующим образом: / home / deployer / webapps / mysite.com / public
  11. При развертывании Capistrano по умолчанию в общей папке создается символическая ссылка , называемая текущей , и указывает на /home/deployer/webapps/mysite.com/public/releases/most_current_release
  12. Я рекурсивно изменил каталог установщика на 777
  13. / opt / nginx права доступа: rwxr-xr-x
  14. / usr / local / rvm / gems / ree-1.8.7-2010.02 / gems / passenger-3.0.2 прав доступа: 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 ]

1 голос
/ 04 марта 2011

обратный public и current для корневой директивы.

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

1 голос
/ 21 ноября 2011

Вы должны добавить пользователя-разработчика и root в группу rvm.

sudo usermod -a -G rvm deployer
sudo usermod -a -G rvm root
0 голосов
/ 21 января 2011

'nginx -v' выводит версию (или на стороне клиента, просматривает заголовки в вашем браузере).

Slicehost предлагает отличные статьи для такого рода вещей, которые вы можете сравнить с вашей собственной конфигурацией, илидаже следовать с самого начала.[Я тоже использую Linode, но предпочитаю учебники Slicehost.;)]

http://articles.slicehost.com/tags/nginx

В руководствах nginx определенно описываются настройки прав доступа, что походит на причину проблемы, которую вы описываете.Рельсы и Капистрано.

...