28 мая 2022
Для хранения больших данных, а конкретно файлов и прочего мусора, лучше использовать S3 хранилища, например Amazon, Сбер, Mail, Yandex и других, но в связи со сложными погодными условиями, будем настраивать хранение на Российских серверах, например у Яндекса с их Object Storage.
Как известно Drupal это зверь для работы с большими и специфическими сайтами, например у нас есть CRM система, где пользователи, часто загружают, открывают, скачивают документы. Документы, как известно, любят кушать место на диске. Приступим:
- Яндекс
- Регистрируемся в Яндекс, открываем https://cloud.yandex.ru и нажимаем Подключиться
- Консоль управления, читаем и отжимаем нужные галочки -> Войти
- Создайте ваше первое облако -> Любое название, например site-cloud -> Создать
- Видим панель управления -> Слева вверху, квадратики (Далее Меню), нажимаем -> Выбираем Биллинг -> Добавляем Платежный аккаунт -> Создаем и закидываем на счет, например 500 руб.
- Ждем пока деньги зачисляться и аккаунт станет в Active
- Жмем Меню -> Консоль управления -> По центру экрана, Вкладки "Сервисные аккаунты" -> Справа вверху "Создать сервисный аккаунт"
- Имя - любое
- Остальное пропускаем
- Роли в каталоге -> выбираем из списка: editor и iam.serviceAccounts.user
- Сохраняем. Справа вверху видим и нажимаем "Создать новый ключ" -> Создать статический ключ доступа (Object Storage...) -> Создать
- Копируем к себе "Идентификатор" и "Secret key" -> Сохранили. Отложили в сторонку. Здесь мы закончили.
- Жмем Меню -> Консоль управления -> из списка выбираем Object Storage -> Переходим в Бакеты -> Создаем бакет
- Имя - любое понятное имя, например название сайта
- Макс. размер - выбираете какой необходимо, либо просто ставим галочку "Без ограничения"
- Остальные поля По умолчанию
- Сохраняем
- Теперь мы создали бакет и нам нужно привязать к нему пользователя.
- Напротив нашего Бакета видим 3 точки, жмем -> Выбираем ACL бакета -> Выбираем нашего созданного и выбираем READ и WRITE -> Сохраняем
- Жмем на название бакета -> Выбираем "CORS"
- Описание - Любое
- Allowed Origins - https://*.site.com
- Allowed Methods - GET, PUT, HEAD, POST, DELETE
- Остальное не трогаем и Сохраняем
- На этом все, работы с Яндексом закончены
- Drupal
- Ставим модули S3 File System и S3 File System CORS Upload
- Открываем наш сайт по FTP/SSH
- Открываем файл settings.php (web/sites/default/settings.php)
- В самый низ, вставляем:
# S3FS setting $settings['s3fs.access_key'] = 'Идентификатор'; $settings['s3fs.secret_key'] = 'secret key'; $settings['s3fs.use_s3_for_public'] = TRUE; $settings['s3fs.use_s3_for_private'] = TRUE; $settings['php_storage']['twig']['directory'] = '../storage/php';
- Сохраняем
- Переходим к странице настроек, по пути /admin/config/media/s3fs
- S3 Bucket Name -> Название нашего бакета в Яндексе
- Жмем Use a Custom Host и вбиваем https://storage.yandexcloud.net
- Ставим в S3 Object Cache-Control Header -> public, max-age=300
- Жмем
- Public Folder -> public
- Private Folder -> private
- Сохраняем
- Открываем вкладку "Действия" -> "Validate configuration" -> "Проверить" -> Получаем сообщение "Your configuration works properly"
- Готово. Дальше уже можете загрузить уже существующие в облако и произвести прочие действия описанный в документации модуля Drupal S3fs.
Если видите ошибку, можете воспользоваться нашими услугами по настройке синхронизации вашего Drupal сайта с S3 хранилищем.