2013-05-22 2 views
0

У меня есть приложение Rails 3, которое имеет модель вложения и использует драгоценный камень Paperclip. Все работает отлично в среде разработки, но на рабочем сервере мы не можем получить доступ к каким-либо загруженным изображениям. Изображения находятся в правильной папке, где они должны быть, но когда я пытаюсь связаться с ними в браузере, я просто получаю страницу 404.Rails/Paperclip - Не удается просмотреть загруженные изображения

Папка загрузки находится под общей папкой и называется «загрузка»

я могу получить доступ к этому: «APP_URL/загрузки/test.html», который я создан вручную, чтобы увидеть, если он работает

Но я не может получить доступ к этому: «app_url/uploads/test.jpg», который я загружаю в приложение через Paperclip.

Я могу предположить, что это имеет какое-то отношение к конфигурации сервера, но я не эксперт и вам может понадобиться помощь.

Благодаря

UPDATE

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

+0

add code example please – ferkulat

+0

Я только что понял, что загруженные файлы принадлежат «никому», и когда я вручную меняю владельца на «root», похоже, что он работает нормально. Поэтому мне нужно найти способ сообщить, что файлы Paperclip принадлежат «root» – umut

+0

Каким пользователем является ваш сервер приложений Rails, работающий как? Какой пользователь работает на вашем веб-сервере? Почему вы пытаетесь получить доступ к файлам через root вместо действительного, не привилегированного пользователя? – jefflunt

ответ

0

Не рекомендуется, чтобы веб-приложение могло писать файлы с правами администратора. Разрешения на файлы выводятся из процесса, записывающего файлы. В случае, если вы используете Пассажир, есть понятие переключения пользователя:

http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerDefaultUser

При запуске вашего приложения, Пассажир пытается выяснить, какой пользователь владеет эти файлами, и пытается переключить это процесс применения к тому, что пользователь. В случае неудачи, «никто» не используется по умолчанию.

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

Вы используете Capistrano для развертывания?

+0

config.ru и environment.rb принадлежал root, и я сделал их никому не принадлежащими, затем перезапустил apache и мое приложение, попытался загрузить файлы, успех, загруженные файлы принадлежат кому-либо, как было раньше, и до сих пор не могут их видеть в браузере, если я не вручную их привяжу к root. Я не использую Капистрано. – umut

+0

Ваши файлы и каталоги не должны принадлежать root, но не привилегированному пользователю. Как я уже писал, Пассажир выбирает пользователя для процесса приложения из того, что владеет 'config.ru' (для приложений Rack) или' config/environment.rb' (для приложений Rails). – datenimperator

Смежные вопросы