[Решено]Как правильно сменить директорию загружаемых файлов, изображений на работающем сайте?

Главные вкладки

Аватар пользователя VladoMire VladoMire 18 мая 2010 в 11:13

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

По умолчанию директория Drupal Путь файловой системы sites/default/files:
Сложились обстоятельства, что нужна другая директория.

Необходимо решить эту проблему, поскольку у многих может встать такой вопрос. Заодно в ходе обсуждения получится методика смены, указанной директории.

По изучению вопроса предварительно наметился следующий теоретический (пока) порядок процедуры изменения:

1. Делаем бэкап базы;
2. Переводим в режим обслуживания;
3. Меняем настройку В файловой системе Drupal admin/settings/file-system
меняем sites/default/files на mydir;
4. Копируем папки загружаемых файлов и изображений, в том числе создаваемых модулями Imagecache, Image и др.
из директории sites/default/files в mydir;
5. Правим шаблоны, если это необходимо.

Может кто имел практический опыт смены директории по умолчанию и подскажет правильно ли то, что я написал? Или может существуют подводные камни? Все ли модули, редакторы будут работать связанные с загрузкой файлов и изображений будут работать с новой директорией или необходимы дополнительные действия, переопределения и правки?

Комментарии

Аватар пользователя tolykot tolykot 18 мая 2010 в 16:46

Тоже интересуют этот вопросик. Нужно локально попробовать... Думаю просто переместить файлы будет недостаточно

Аватар пользователя v1adimir@drupal.org v1adimir@drupal.org 18 мая 2010 в 20:33

пропущен важнейший пункт -- открыть в текстовом редакторе дамп базы и поменять все вхождения sites/default/files на sites/mydir/files

да, еще, как минимум, за день до переноса не грешить!

советую всегда заводить директорию в sites/imya-domena.ru, то есть под именем финального домена, а в settings.php добавлять строку

$conf['file_directory_path'] = 'sites/imya-domena.ru/files';

Аватар пользователя VladoMire VladoMire 19 мая 2010 в 0:20

В общем получается такая картина:
по умолчанию не грешим несколько дней до смены директории:))

1. Делаем бэкап базы;
2. Открываем в текстовом редакторе дамп базы и меняем все вхождения sites/default/files на sites/mydir/files (или иное);
3. Переводим в режим обслуживания;
4. Копируем папки загружаемых файлов и изображений, в том числе создаваемых модулями Imagecache, Image и др. из директории sites/default/files в sites/mydir/files (или иное);
5. В settings.php добавляем строку settings.php добавлять строку
$conf['file_directory_path'] = 'sites/imya-domena.ru/files';
(так как рекомендуется заводить директорию в sites/imya-domena.ru, то есть под именем финального домена);
6. Правим шаблоны, если это необходимо;
7. Восстанавливаем исправленную базу;
8. Меняем настройку В файловой системе Drupal admin/settings/file-system
меняем sites/default/files на sites/mydir/files (или иное);
9. Проверяем работу сайта;
10. Переводим в рабочий режим.

Что еще можно уточнить? Модули отработают по новому пути после п.8?
Можно ли выносить файлы из папки sites или всетаки придерживаться её?

Вопрос очень важен, чтобы не завалить рабочий сайт. Поэтому любая дельная помощь приветствуется.

Аватар пользователя v1adimir@drupal.org v1adimir@drupal.org 19 мая 2010 в 1:51

> Копируем папки загружаемых файлов и изображений, в том числе создаваемых модулями Imagecache

Эта операция бессмысленная. На то оно и imagecache чтобы генерировать в cache отсутствующие изображения. Хотя на нагруженных сайтах может и оправдано.

> $conf['file_directory_path']

имеет смысл задавать в процессе инсталяция сайта чтобы сразу все жило только в этой директории. хотя не помешает.

перед бэкапом исходной базы желательно очистить кэш, размер дампа может от этого уменьшиться разы, иногда, раз в 10.

бэкап можно еще делать модулем backup and migrate, оно само игнорирует cache таблицы.

обязательно сделать и хранить как минимум неделю бэкап рабочего сайта. )

Аватар пользователя VladoMire VladoMire 19 мая 2010 в 13:36

В результате проведенного анализа БД, API Drupal и модулей, образовался следующий порядок смены директории загружаемых файлов:
1. Переводим сайт в режим обслуживания.
2. Делаем бэкап БД, предварительно очистив кэш. (чтобы уменьшить количество правок пути файлов).
3. Делаем копию бэкапа БД и сохраняем в надежном месте на компьютере, для возможности отката в случае необходимости.
4. Открываем в текстовом редакторе дамп базы и меняем все вхождения sites/default/files на sites/mydir/files (или иное);
5. В файл директории sites/default settings.php добавляем строку, добавлять строку в массиве $cong:
'file_directory_path' => 'sites/mydir/files или иное',
это добавление элемента массива жестко присваивает новую директорию для файлов сайта.
До этого оно формируется функциями API Drupal (conf_path() и file_directory_path() ).
6. Копируем (не удаляем) папки с файлами из старой директории sites/default/files в указанную новую п.5, выставляем аналогичные права.
7. Восстанавливаем БД из исправленного дампа БД п.4.
8. Проверяем работу сайта и если все нормально удаляем старые папки файлов из sites/default/files. И работем дальше.

Аватар пользователя VladoMire VladoMire 21 мая 2010 в 11:27

Реально проверено на работающем сайте! Все перечисленное выше верно.
Я заменил sites/default/files на mydir (на одну папку).
Единственное в одном модуле было некорректное указание пути в программном коде, он не работал.
Но оказалась новая рекомендуемая версия бета, в которой уже учитывалась смена директории в программном коде. И оказалось, что новая версия модуль сделана лучше, чем была. Заменил и не нарадуюсь.
Так, что все в порядке и Решено!