Конфигурация Capistrano и XSendFile
Я пытаюсь настроить рабочий сервер Rails с Apache 2.2, Passenger 4.0.59 и XSendFile 0.12. Приложение разворачивается через Capistrano.
Развернутое приложение создает (возможно, большой) PDF для#{Rails.root}/tmp
и обслуживает этот файл, используяsend_file
.
Проблема в том, что Capistrano использует символические ссылки, чтобы указать на развернутую версию приложения. С другой стороны, XSendFile разыменовывает символические ссылки и отказывается обслуживать файл, если его реальное местоположение находится вне корневого каталога документа, даже если это разрешеноXSendFilePath
, Apache error.log гласит:
(20023)The given path was above the root path: xsendfile: unable to find file: /resolved/path/to/file.pdf
Все хорошо работает когда я ставлюPassengerAppRoot
а такжеXSendFilePath
к реальному местоположению текущей версии приложения, без символических ссылок на пути. Но это нормально до следующего развертывания, которое требует перенастройки apache. Не очень полезно
Как настроить параметры развертывания Capistrano и параметры XSendFile, чтобы он работал вместе?
Я пробовал решения сln -nFs
описано вCapistrano & X-Sendfile И вmod_xsendfile с символическими ссылками но никто не работает.