2016-07-27 2 views
0

Я пытаюсь разработать веб-приложение django, которое будет использоваться локально там, где я работаю. проблема в том, что есть некоторые отчеты, которые я трансформирую, чтобы быть основанными на HTML. некоторые из данных, которые используются в моем приложении, существуют в файлах excel, расположенных на сетевом диске.развернуто приложение apache + django для доступа к локальным файлам за пределами каталога проекта

В разработке я могу получить доступ ко всем файлам без каких-либо проблем с абсолютным путем. Пример: «Z: /dataFile.xls». при развертывании моего приложения на сервере apache + mod_wsgi я продолжаю получать сообщение об ошибке, что файл не найден. Я проверил несколько ответов, и все они, похоже, сосредоточены на статических файлах в самом каталоге проекта.

моя установка:

  • окна 7 (64 бит)
  • питона 3,5 (64)
  • Джанго 1,8
  • апач 2.4.20-win64-VC14
  • mod_wsgi-4,4 .23 + ap24vc14

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

Эти файлы должны быть прочитаны из этих мест, потому что пользователи редактируют их, и эти значения включены в этот отчет.

Если у кого-то есть лучшее решение, позволяющее пользователю редактировать файлы, и в то же время приложение может их прочитать.

спасибо.

+0

Apache по умолчанию не может обращаться к файлам за пределами своей ограниченной экосистемы. Если вы хотите получить доступ к содержимому файловой системы, вам нужно настроить его для этого. См. Также: http://askubuntu.com/questions/325498/apache-cant-access-folders-in-my-home-directory – Ivan

+0

Является ли сервером Apache на том же компьютере, что и ваш dev-сервер? Если да, используете ли вы какую-либо виртуальную машину или докер или что-нибудь, что может «изолировать» ваш сервер и предотвратить доступ к файловой системе? – raphv

+0

в настоящее время да, мой сервер Apache находится на том же компьютере, что и мой dev-сервер. Это моя первая разработка django-приложения, и я был на этапе тестирования о том, как ее использовать для производства. нет виртуальных машин. даже django не используется как virtualenv. все они существуют на одной физической машине. –

ответ

0

поэтому, попробовав решение, указанное в комментарии Ивана allow Apache to access folders. Я тестировал его в локальных папках, и он работал нормально. при попытке использовать сетевые диски (например: «Z: \ shared_folder») apache не смог их распознать. Я попытался затем написать фактический путь к общей папке (например: «\ server_name \ shared_folder»), и он работал нормально. Обратите внимание, что если вы используете Apache как услугу, вам нужно изменить имя пользователя, которое использует служба. сначала вам нужно отредактировать права доступа к имени пользователя и добавить Log on as a service & Act as part of the operating system, затем откройте службы «Services.msc», откройте службу apache, а затем на вкладке «Вход» измените имя пользователя из локальной системной учетной записи. это гарантирует, что служба имеет доступ к общей папке на сетевом диске.

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