#ruby-on-rails #file-upload #paperclip #passenger
#ruby-on-rails #загрузка файла #скрепка #пассажир
Вопрос:
Я использую скрепку для обработки загрузки в проекте ruby on rails, когда я развертываю его на рабочем сервере, я обнаружил, что не могу загрузить большой файл (даже всего 3 МБ), я получу перенаправление на «эта веб-страница недоступна» (chrome), и я могу загрузить файл размером 1,5 МБ. Я понятия не имею, что является причиной этого. Я не могу воспроизвести это на localhost в рабочем режиме, у нас нет никакой проверки с помощью скрепки, вот модель вложения:
class Attachment < ActiveRecord::Base
belongs_to :attachable, polymorphic: true
has_attached_file :attachment
do_not_validate_attachment_file_type :attachment
end
Мы используем Apache и Passenger на сервере, и у нас нет чего-то подобного LimitRequestBody
в нашей конфигурации. Не уверен, что еще могло быть причиной этого.
Обновить:
Обнаружена следующая ошибка из журнала пассажиров:
Unexpected error in mod_passenger: An error occurred while receiving HTTP upload data: Unknown error 18446744073709551514 (-102)
Backtrace:
in 'boost::shared_ptr<Passenger::BufferedUpload> Hooks::receiveRequestBody(request_rec*)' (Hooks.cpp:1155)
in 'int Hooks::handleRequest(request_rec*)' (Hooks.cpp:532)
Некоторое обсуждение по теме: https://code.google.com/p/phusion-passenger/issues/detail?id=288 , они предлагают увеличить время ожидания, но я не думаю, что это хорошая идея.
Наконец-то исправлено, используя thin
вместо passenger
.
Комментарии:
1. Используете ли вы AWS (Amazon Web Services)?
2. @JohnC нет, мы храним файлы на нашем сервере, у нас есть другой проект, развернутый на том же сервере, и он может загружать большие файлы с помощью скрепки, я пытался отследить их разницу, но безуспешно.
3. У меня была действительно похожая проблема на AWS. Оказалось, что в passenger отсутствовал временный каталог. Все, что я могу сказать, это проверить журналы на наличие пассажира, и это может дать вам некоторые подсказки.
4. @JohnC Я просмотрю это, в любом случае спасибо за вашу идею.
Ответ №1:
Иногда веб-серверам нравится apache
или nginx
ограничить размер загружаемого файла. В зависимости от того, используете ли вы Passenger в автономном режиме или в качестве серверного модуля, посмотрите конфигурацию вашего веб-сервера и увеличьте там лимит.