在Drupal 7中,默认的上传路径是在“公共”文件系统路径中的“文件系统”选项中设置的。是否可以在此路径中指定其他服务器?我有一个正在开发的Drupal 7网站,它将拥有约2万个文件,我想将它们放置在与Web服务器不同的服务器上。如果无法指定其他服务器,那么是否有用户可以处理的模块?
在Drupal 7中,默认的上传路径是在“公共”文件系统路径中的“文件系统”选项中设置的。是否可以在此路径中指定其他服务器?我有一个正在开发的Drupal 7网站,它将拥有约2万个文件,我想将它们放置在与Web服务器不同的服务器上。如果无法指定其他服务器,那么是否有用户可以处理的模块?
Answers:
我做的事情很相似。如果您正在运行具有此配置功能的基础架构,那么我建议在文件服务器(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服务器的读写访问权限,实际上能够上传文件。
另外一个极好的选择是Storage API。这是关于它的报价(来自模块的项目页面):
...是用于托管文件存储和服务的低级框架。模块和所有核心功能将与其他模块无关,以提供这种低级功能。欢迎使用子模块以允许Storage API与其他贡献的模块进行交互,但是除非该模块的低级功能必要,否则storage.info文件中绝对不应有dependency []语句。
它具有以下功能: