Capistrano + Nginx + Passenger = 403
Я также спрашивал об этом в stackoverflow, но до сих пор не получил ни одного ответа, который помог бы мне решить эту проблему. Я потратил почти неделю, пытаясь решить эту проблему, и я просто не продвигаюсь вперед. Кажется, что эта проблема довольно распространена, но ни одно из найденных мной решений не подойдет мне. Мой приятель на самом деле создает ту же установку, и у него та же проблема.
После нескольких дней, застрявших с ошибкой 403, я снова начал использовать этот учебник: http://blog.ninjahideout.com/posts/a-guide-to-a-nginx-passenger-and-rvm-server
Я надеялся, что начать с нуля, используя этот учебник, получится, но без кубиков. В любом случае, если вы посмотрите учебник, вы увидите, какие шаги я предпринял.
Вот по сути то, что у меня происходит.
- У меня есть аккаунт VPS на linode.com
- Серверная ОС Ubuntu 10.04
- Snow Leopard 10.6.6. Для развертывания с Capistrano используется локальная ОС (не должна иметь значения, но только чтобы вы знали).
- Я использую RVM на сервере. Версия 1.2.2
- Ранее я работал на ruby-1.9.2-p0 [ i386 ], но согласно приведенному выше уроку я переключился на ree-1.8.7-2010.02 [i386].
- Запуск ' which ruby ' из командной строки подтверждает, что я использую 1.8.7 со следующим выводом: /usr/local/rvm/rubies/ree-1.8.7-2010.02/bin/ruby
- пассажир -v печатает следующее: Phusion Passenger версия 3.0.2
- Запуск 'nginx -v' дает мне сообщение о том, что команда nginx не может быть найдена. Сервер определенно работает и работает, так как я могу использовать nginx для обслуживания статических файлов, но это может быть связано с моей проблемой.
- У меня есть два пользователя, занимающиеся установкой. root, который я использовал для установки всего, и deployer, который является пользователем, которого я специально создал для развертывания своих приложений
- Мой каталог веб-приложений находится в домашнем каталоге пользователя развертывания следующим образом: /home/deployer/webapps/mysite.com/public
- При развертывании Capistrano по умолчанию в общей папке создается символическая ссылка с именем current, которая указывает на /home/deployer/webapps/mysite.com/public/releases/most_current_release.
- Я chmodded каталог развертывания рекурсивно до 777
- / opt / nginx разрешения: rwxr-xr-x
- /usr/local/rvm/gems/ree-1.8.7-2010.02/gems/passenger-3.0.2 permissions: rwxrwsrwx
- Мой конфигурационный файл 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
Надеюсь, поможет