【问题标题】:deployed apache + django application access local files outside project directory部署的 apache + django 应用程序访问项目目录外的本地文件
【发布时间】:2016-07-27 14:57:13
【问题描述】:

我正在尝试开发一个 django 网络应用程序,以便在我工作的地方使用。问题是有一些报告我正在转换为基于 HTML 的报告。我的应用程序中使用的一些数据存在于位于网络驱动器上的 excel 文件中。

在开发中,我可以访问所有文件,而绝对路径没有任何问题。例如:'Z:/dataFile.xls'。在 apache 服务器 + mod_wsgi 上部署我的应用程序时,我不断收到找不到文件的错误消息。我检查了多个答案,所有答案似乎都集中在项目目录本身的静态文件上。

我的设置是:

  • Windows 7(64 位)
  • python 3.5 (64)
  • Django 1.8
  • apache 2.4.20-win64-VC14
  • mod_wsgi-4.4.23+ap24vc14

当我在应用程序的静态文件夹中移动文件时,应用程序的部署没有任何问题,我可以毫无问题地读取它们。问题仅在于我尝试从外部位置读取(即网络驱动器或仅从 C 驱动器但提供文件的绝对路径,正如我所提到的)

需要从这些位置读取这些文件,因为用户编辑它们并且这些值包含在此报告中。

如果有人有更好的解决方案,使用户能够编辑文件,同时应用程序可以读取它们。

谢谢。

【问题讨论】:

  • Apache 默认无法访问其有限生态系统之外的文件。如果您希望它访问文件系统内容,则需要对其进行配置。另见:askubuntu.com/questions/325498/…
  • Apache 服务器是否与您的开发服务器在同一台机器上?如果是,您是否使用任何虚拟机或 docker 或任何可能“沙箱”您的服务器并阻止访问文件系统的东西?
  • 目前是的,我的 apache 服务器与我的开发服务器在同一台机器上。这是我第一次开发 django 应用程序,我正处于如何将其部署到生产环境的测试阶段。没有使用虚拟机。甚至 django 也没有用作 virtualenv。它们都存在于同一台物理机器上。
  • Ivan 给出的目录选项,当它是机器上的本地目录时可以正常工作。如果指定的位置在网络映射驱动器上,则不起作用。

标签: python django apache


【解决方案1】:

所以在尝试了 Ivan 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 服务,然后在登录选项卡下从本地系统帐户更改用户名。这将确保该服务可以访问网络驱动器上的共享文件夹

【讨论】:

    猜你喜欢
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 1970-01-01
    相关资源
    最近更新 更多