Скрепка и пассажир: как увеличить размер загружаемого файла

#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 в автономном режиме или в качестве серверного модуля, посмотрите конфигурацию вашего веб-сервера и увеличьте там лимит.