如何配置D7,以便文件上传到其他服务器


9

在Drupal 7中,默认的上传路径是在“公共”文件系统路径中的“文件系统”选项中设置的。是否可以在此路径中指定其他服务器?我有一个正在开发的Drupal 7网站,它将拥有约2万个文件,我想将它们放置在与Web服务器不同的服务器上。如果无法指定其他服务器,那么是否有用户可以处理的模块?


您是否已完成此任务。
Cindrella)

关于此的任何模块?
Dushyant Joshi

Answers:


8

我做的事情很相似。如果您正在运行具有此配置功能的基础架构,那么我建议在文件服务器(Linux或Windows Server)上提供共享,然后将其挂载在Drupal的公共文件路径中,无论该目录的公共目录在哪里。

例如,采用以下Samba配置(如果运行基于Linux的文件服务器,则位于/etc/samba/smb.conf中)。在所有其他配置选项之后,它位于文件的结尾:

[data]
    comment = Data directory
    browseable = yes
    writable = yes
    valid users = "@DOMAIN\Domain Admins"
    path = /data
    create mask = 0664
    force create mode = 0664

那里的valid users 语法说“允许该组用户”访问此共享。在这种情况下,我们使用PAM将文件服务器连接到Active Directory,并且一旦将两者连接起来,即可使用此特定组。

在Web服务器上,无论托管您的Drupal站点的位置如何,都导航到公共文件目录。假设您需要使文件可用的特定字段是public:// field_with_20k_files /。您将运行类似的安装命令,如下所示:

sudo mount -t cifs -o user=domainadministrator,uid=domainadministrator,gid=apache //fileserver/data /path/to/field_with_20k_files

我已对gid运行Web服务器的任何进程进行了设置,因此它可以访问该目录。您很可能希望确保Web服务具有对Web服务器的读写访问权限,实际上能够上传文件。


所有答案都是好的,但是由于我们可以控制基础结构,因此从Drupal的角度来看,此答案是最简单,最直接的实现方法,因为我们无需安装任何新模块。我们在Windows环境中,但感谢您提供了非常详细的步骤!
John81

在这种情况下,您基本上可以跳过Samba配置,而直接使用具有适当Windows权限设置的用户名和密码运行mount命令。如果您有任何疑问,请告诉我。
Lester Peabody

我正在尝试执行此操作,但是遇到了问题。我的服务中心能够挂载Windows服务器,但是我们不知道从那里去哪里。我试图将/ mount_file_path用作公用文件目录,但是出现一个错误,提示它不存在并且无法创建。
nmillin

5

另外一个极好的选择是Storage API。这是关于它的报价(来自模块的项目页面):

...是用于托管文件存储和服务的低级框架。模块和所有核心功能将与其他模块无关,以提供这种低级功能。欢迎使用子模块以允许Storage API与其他贡献的模块进行交互,但是除非该模块的低级功能必要,否则storage.info文件中绝对不应有dependency []语句。

它具有以下功能:

  • 可插拔架构-可以扩展为与任何存储服务一起使用。
  • 冗余-可以将其配置为将文件存储在多种服务中,并即时更改正在服务的文件。这意味着您的网站不会因为出现问题服务而瘫痪
  • 访问控制API-可用于电子商务。
  • 重复数据删除 -当相同文件存储在同一容器中时,将仅创建一个实例。这样可以节省带宽和存储空间。
  • 文件和图像字段集成-启用“核心桥”子模块。
  • 审核模块-将文件清单与数据库中记录的清单进行比较,以确保记录准确。

4

在这方面可能也有帮助的两个模块是CDN(由许多大型站点使用,包括Economist.com)和Amazon S3(专门用于使用Amazon S3而不是本地文件系统)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.