Вы здесь

Как перенести файловое хранилище на другой сервер

1

Друзья, всем привет. Вкратце задача
У меня есть сайт библиотеки, на котором хранятся файлы pdf (их уже более 190 Гб). Сайт работает локально на Vertigi Server (аналог Denwer). Локальный сервер уже переполнен, и файлы теперь нужно сохранять на локальном хранилище (назовём его \Sharecenter\ его ip - 192.168.1.252). Так вот, мне получается нужно найти настройку, которая отвечает за хранение файлов на сайте.
Друпал - 7 версия
Файлы сохраняются в папке --- ИМЯ_САЙТА/sites/default/files/digipub
Системная папка - открытая --- sites/default/files

Я решил попробовать сделать редирект на сервер \Sharecenter. Создал в папке "sites/default/files" файл .htaccess, в нём указал такой правило редиректа

Redirect 301 http://digita_lib.local/sites/default/files http://192.168.1.251/Volume_1/VertrigoServ/digital_lib.files

Вариант не сработал. Пробовал и другие варианты, которые пока не очень помогли.
У кого какие есть варианты решения?
С друпалом я новичок, поэтому могу не знать даже о элементарных вещах. Любое РЕЛЬНО работающее решение ОЧЕНЬ ПРИВЕСТВУЕТСЯ!!!

Версия Drupal: 
7.x
Категория: 
File APIMappingUser API
Вопрос задан 27.05.2016 - 03:31

sas@drupal.org - я посмотрел CND сети, ну дык у меня же всё находится в пределах одного здания. То есть я буду хранить эти файлы на где то на облаке, а у себя на сетевом хранилище, единственное что меняется - это само хранилище. Грубо говоря - сайт с накопившимися файликами (190 Гб) - остаётся на старом месте, но теперь появляется новое сетевое хранилище, куда и будут сохраняться новые файлы.

Комментарий оставлен 14.06.2016 - 10:31

Ответы

0

Начните исследование с модуля Store API

Ответ дан 27.05.2016 - 07:55
0

В данном случае нужно использовать не Redirect, а RedirectMatch, https://httpd.apache.org/docs/current/mod/mod_alias.html#redirectmatch

На вскидку правило должно быть:
RedirectMatch 301 "^/sites/default/files/(.*\.pdf)$" "http://192.168.1.251/Volume_1/VertrigoServ/digital_lib.files/$1"

UP. Оговорюсь, этот фокус поможет только получить доступ к уже имеющимся файлам, которые были перемещены на другой сервер. И это решение точно будет конфликтовать с загрузкой файлов через друпал!

Ответ дан 27.05.2016 - 14:05

Если не сработает пиши. Будем дебажить. )

Комментарий оставлен 27.05.2016 - 14:07

Владимир, спасибо за вариант. Но вот в чём штука, мне новое сетевое хранилище нужно как раз для того, чтобы там хранить новые файлы. А тут я параллельно начал себе ломать голову - как сайт будет определять, откуда ему брать тот или иной файл - со старого хранилища, или со старого. Наверное самое здравое - перенести все файлы (то и старые и новые) - на новое сетевое хранилище.

Подебажить - очень даже хотел бы, если у Вас будет время. Как лучше это организовать?
Я тогда для этого замучу тестовую площадку, на него выложу этот локальный сайт (без файлов), и соединюсь с Вами. У меня Комсомольск-на-Амуре (+7 к Москве). В какое время Вам удобнее связываться?

Комментарий оставлен 14.06.2016 - 10:36

Если нужно именно новые файлы закачивать, то здесь, увы, нужно что-нибудь хитрее, нежели redirect в апаче. Уверен, что для этой задачи существуют подходящие модули, но мне кажется, что проще всего на сервере, где у вас инсталлирован drupal, подмонтировать к директории files сетевую директорию с файл-сервера. По smbfs или sshfs. Для *nix-систем нужно выполнить комманду типа:

sudo mount -t cifs -o user=USERNAME //192.168.1.252/share /path/to/drupal/sites/all/files

Нужно иметь в виду, что для каждой ОС/конфигурации могут быть свои причуды с точным набором параметров.

P.S. У меня часовой пояс Новосибирска, т.е. +3 к Москве.

Комментарий оставлен 14.06.2016 - 20:05

Владимир,
1. Система - Windows Server 2003 (врядли получится использовать Linux или FreeBSD - ТАМ помимо этого сайта есть много других сервисов)
2. Для совместного продебажки лучше, как я понимаю выложить сайт на файлохост, и дать вам доступ? Попробую это сделать.
Если сможете посмотреть - вот этот модуль - https://www.drupal.org/project/storage_api
Я предполагаю, что он должен помочь. Буду поступать так:
А. Сайт оставлю на сервере, на котором он сейчас и находится
Б. ФайлШару, которая используеся для хранения pdf, помещу на сетевое хранилище.
В. С помощью модуля https://www.drupal.org/project/storage_api постарась сделать редирект на хранилище.

И ещё посмотрите пожалуйста вот этот вариант - http://www.johnandcailin.com/blog/john/scaling-drupal-step-one-dedicated.... То есть здесь предлагается распределённая между несколькими серверами файловая сеть для Drupal 7. Всё бы хорошо, но вот только у меня не несколько серверов с Ubuntu скажем, а 1 сервер с Windows и 1 сетевое хранилище, которое как я понимаю, вообще не поддерживает установку каких-либо файлов.
Поэтому я так думаю, буду делать вариант, который описал выше.

Комментарий оставлен 20.06.2016 - 02:56

Насчет Windows Server 2003 мне сложно давать советы, увы.

Но, повторюсь, идея была следующая — подмонтировать net share как директорию, которую друпал может использовать как file-path. Причем, подключить этот сетевой ресурс к поддиректории в files, чтобы сохранились пути до уже имеющихся ресурсов. А для всех новых файлов включить модуль File (Field) Paths и указать для всех новых файлов закачиваться в подмонтированную директорию.

Проблему вижу в том, что, по умолчанию, windows монтирует сетевые шары как диск. И тут я уже не уверен, можно ли drupal'у указать диск в качестве file-path? Наверняка, это приведет к проблемам с доступок к уже закачанным ресурсам (как решение, эти ресурсы продублировать из прежней директории в новый file-path).

Можно, вроде как, подключить сетевой ресурс к фолдеру, но готового решения я на вскидку не вижу, лишь отсылки к NTFS or DFS junction points.

Очень может быть, что самый простой путь — подцепить share к диску, скопировать на этот диск данные из drupal files и указать этот путь как новый file path — сработает без проблем. Это нужно пробовать. Однако я с экспериментами под windows не помощник.

Комментарий оставлен 28.06.2016 - 12:43
Вы уже дали ответ на данный вопрос. Воспользуйтесь редактированием, если желаете дополнить свой ответ.