Переход от публичной к приватной файловой системе на Drupal 6

Как известно, 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

    UPDATE files SET filepath = REPLACE(filepath, ‘sites/default/files’, ‘/var/www/my_site/data/files’);

    5. Меняем путь к загруженным файлам в node_revisions

    UPDATE node_revisions SET body = REPLACE(body, ‘/sites/default/files’, ‘/system/files’);

    UPDATE node_revisions SET teaser = REPLACE(teaser, ‘/sites/default/files’, ‘/system/files’);

    6. Меняем путь к аватарам пользователя

    UPDATE users SET picture = REPLACE(picture, ‘sites/default/files’, ‘/var/www/my_site/data/files’);

    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-сервере:

    ALTER TABLE files MODIFY filepath VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_bin;

    10. И в конце не забываем почистить кэш на странице admin/settings/performance.

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

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

    ПоделитьсяShare on VKShare on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInEmail this to someoneBuffer this page

    Добавить комментарий

    Ваш e-mail не будет опубликован. Обязательные поля помечены *