Как настроить D7 так, чтобы файлы загружались на другой сервер

9

В Drupal 7 путь загрузки по умолчанию задается в параметрах файловой системы в пути к публичной файловой системе. Можно ли указать другой сервер в этом пути? У меня есть веб-сайт Drupal 7, который мы разрабатываем и который будет иметь около 20 тыс. Файлов, и я бы хотел разместить их на другом сервере, чем веб-сервер. Если невозможно указать другой сервер, то есть ли какие-либо пользовательские модули, способные справиться с этим?

John81
источник
Вы выполнили это задание?
Золушка
Любой модуль по этому поводу?
Душянт Джоши

Ответы:

8

Я делаю что-то очень похожее. Если вы используете инфраструктуру, которая поддерживает эту конфигурацию, я рекомендую предоставить общий ресурс на вашем файловом сервере (Linux или Windows Server) и просто смонтировать его в общем пути к файлам Drupal, где бы ни находился публичный каталог для этого конкретного поля.

Например, возьмите следующую конфигурацию Samba (находится в /etc/samba/smb.conf, если вы запускаете файловый сервер на основе Linux). Это происходит в самом конце файла после всех других параметров конфигурации:

[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, и эта конкретная группа становится доступной, как только вы подключите их.

На вашем веб-сервере, где бы вы ни размещали ваш сайт Drupal, перейдите в каталог публичных файлов. Скажите, что конкретное поле, для которого вам нужно сделать файлы доступными, является общедоступным: // field_with_20k_files /. Вы бы запустили подобную команду монтирования примерно так:

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

У меня есть gidнабор для любого процесса, выполняющего веб-сервер, поэтому он имеет доступ к этому каталогу. Скорее всего, вы захотите убедиться, что веб-сервис имеет доступ на чтение и запись к веб-серверу и способен загружать файлы.

Лестер Пибоди
источник
Все ответы хороши, но, поскольку у нас есть контроль над инфраструктурой, этот ответ является наиболее простым и простым с точки зрения Drupal, поскольку нам не нужно устанавливать какие-либо новые модули. Мы находимся в среде Windows, но спасибо за невероятно подробные шаги!
John81
В этом случае вы можете просто пропустить конфигурацию Samba и просто запустить команду монтирования напрямую, используя имя пользователя и пароль, которые имеют соответствующие настройки разрешений Windows. Дайте знать, если у вас появятся вопросы.
Лестер Пибоди
Я пытаюсь это сделать, но у меня проблемы. Мой сервисный центр смог смонтировать сервер Windows, но мы не знали, куда идти. Я попытался использовать / mount_file_path в качестве публичного файлового каталога, но я получаю сообщение об ошибке, что он не существует и не может быть создан.
nmillin
5

Также отличным вариантом будет API хранилища . Вот цитата об этом (со страницы проекта модуля):

... это низкоуровневая структура для управляемого хранения и обслуживания файлов. Модуль и все основные функции останутся независимыми от других модулей, чтобы обеспечить эту низкоуровневую функциональность. Подмодули могут разрешить API хранилища взаимодействовать с другими добавленными модулями, но в файле storage.info никогда не должно быть оператора зависимостей [], если это не требуется для низкоуровневой функции этого модуля.

Он имеет следующие особенности:

  • Сменная архитектура - ее можно расширить для работы с любым сервисом хранения.
  • Резервирование - его можно настроить для хранения файлов в нескольких сервисах и мгновенного изменения того, какой из них обслуживается. Это означает, что ваш сайт не будет остановлен сервисом, имеющим проблемы .
  • API контроля доступа - может использоваться для электронной коммерции.
  • Дедупликация - когда идентичные файлы хранятся в одном и том же контейнере, будет создан только один экземпляр. Это экономит пропускную способность и хранение.
  • Интеграция полей файла и изображения - включите подмодуль «основной мост».
  • Модуль аудита - сравнивает манифест файлов с тем, что записано в базе данных, чтобы убедиться в точности записи.
ropic
источник
4

В этой области также могут помочь два модуля: CDN (используется многими крупными сайтами, включая Economist.com) и Amazon S3 (специально для использования Amazon S3 вместо локальной файловой системы).

Патрик Кенни
источник