Назад | Перейти на главную страницу

Capistrano + Nginx + Пассажир = 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. Локальная ОС (не имеет значения, но вы знаете), используемая для развертывания с 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. Бег 'какой рубин'из командной строки проверяет, что я использую 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. у меня есть два пользователя имея дело с установкой. корень который я использовал для установки всего, и развертыватель который является пользователем, которого я создал специально для развертывания моих приложений
  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 / Release / current_release, и он будет отображаться. Но рельсы не годные.

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

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

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

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

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

Кажется, твои пути запутались.

/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] / Release / 20080819001122
  • [deploy_to] / Release / ...
  • [deploy_to] / общий
  • [deploy_to] / shared / log
  • [deploy_to] / shared / pids
  • [deploy_to] / shared / system
  • [deploy_to] / текущая ссылка на -> [deploy_to] / Release / 20100819001122

где deploy_to твое /home/deployer/webapps/mysite.com/live

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

Хм:

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

Разве это не должно быть так?

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