Как известно, Drupal поддерживает два метода загрузки:
- Публичный (Public) - файлы доступны напрямую по протоколу HTTP;
- Приватный (Private) - файлы передаются через Drupal.
При установке Drupal можно выбрать какой метод загрузки использовать, при этом проблем возникнуть не должно. Гораздо опаснее переходить к другому методу загрузки на работающем сайте. Поэтому решил поделиться своим опытом.
1. На странице admin/settings/file-system меняем путь к файловой система с sites/default/files на /var/www/my_site/data/files. Указанная папка должна существовать и быть доступной для записи в неё файлов сайтом.
2. На той же странице выбираем метод загрузки Приватный. И нажимаем «Сохранить настройки».
3. Копируем файлы из папки sites/default/files в новое место /var/www/my_site/data/files.
4. Меняем путь к файлам в таблице files
5. Меняем путь к загруженным файлам в node_revisions
UPDATE node_revisions SET teaser = REPLACE(teaser, '/sites/default/files', '/system/files');
6. Меняем путь к аватарам пользователя
7. У меня использовался модуль Image resize filter поэтому устанавливаем заплатку image_resize_filter_private_uploads_372607_05.patch (drupal.org/node/372607).
8. У меня в настройках темы был прописан свой путь к логотипу, поэтому меняем в настройках темы путь к произвольному логотипу с sites/default/files/logo.gif на system/files/logo.gif.
9. В связи с переходом на приватную файловую систему проявилась ещё одна особенность MySQL. По умолчанию в MySQL строки (char, varchar, text) регистронезависимы. Таким образом строки "Пример" и "примеР" идентичны. Это проявилось при просмотре фотоальбомов, на сервере есть файлы с одинаковыми именами, но с разным регистром расширений: «11_7.jpg» и «11_7.JPG». И при попытке просмотреть файл «11_7.JPG» выдавалась страничка с отказом в доступе. Это лечится следующей командой на MySQL-сервере:
10. И в конце не забываем почистить кэш на странице admin/settings/performance.
Ещё раз подчеркну, что это мой личный опыт, при использовании других модулей, возможно, потребуется менять что-то ещё.
Впечатления от использования приватной файловой системы: основной и самый серьезный минус это снижение скорости загрузки страниц сайта, особенно фотогалерей. Из плюсов это обеспечение приватности для скачиваемых файлов.
Комментарии
Спасибо, полезно.
Попробовал сделать изменения на работающем сайте (6.19), но получилось не до конца - изображения доступны, без проблем открываются, а вот при попытке скачать приложенный к ноду файл выдается 404 - Not Found. Даже для залогиненного админа, даже для файлов, которые им же и залиты.
Права на изображения и на прочие файлы при закачке автоматически устанавливаются как 644, т.е. должны быть доступны для чтения всем, по идее.
Пробовал перезакачивать эти файлы уже после переключения настройки, результат тот же.
UPD: оказывается, если сохранять по правой кнопке мышки файл через контекстное меню "сохранить как...", то все отлично работает. Но, к сожалению, далеко не все посетители догадаются так сделать.
Что можно сделать, чтобы по ЛКМ тоже открывался диалог скачивания файла?
UPD2: При скачивании файлов (через контекстное меню), не изменяется счетчик скачиваний в download_counter.
UPD3: А, нет, не отлично оно сохраняет файлы по правой кнопке - внутри вордовского документа оказывается та же ошибка 404. Это вот вообще как?
а что еще не придуман модуль котрым можно разделить на приватный и не првиатный... для разных файловвв
А есть такой для 6.x?
Подскажите название, плз.
так сам ищу...