В продолжении перевода своих ресурсов в облака следующим этапом необходимо настроить хранение медиа-файлов WordPress в хранилище S3 в облаке Cloud.ru. Задачка довольно типовая, но есть нюансы.
Прежде всего зарегистрируем сервисный ключ доступа к S3 хранилищу и собственно само хранилище
И кстати, обратите внимание, что у Cloud.ru первые 10гб не тарифицируются.

Задаем осмысленное наименование аккаунта, описание на будущее и уровень аккаунта (Организация).

Назначаем ограниченные права доступа на работу только с хранилищем и доступ на чтение-запись.

Ключ и пароль обязательно сохраняем их больше нигде не покажут.
Создание объектного хранилища S3
Переходим в раздел Evolution -> Object Storage.

Создаем бакет. Обязательно обратите внимание на требования к глобальному наименованию.

Получаем данные по доступу к бакету в разделе Object Storage API.

Настройка внешнего доступа к файлам в формате CDN для чего в настройка бакета перейдите в раздел «Хостинг сайта» и выберите «Настройка публичного доступа».

Открываем публичный доступ к бакету на чтение для всех объектов.

Назначаем бакету доменное имя в настройках бакета.

В настройках хостинг сайта задайте «Главную страницу». Это может быть любой файл, иначе хостинг работать не будет.

Соответственно файлы будут доступны по адресу https://interlan.s3-website.cloud.ru и пробуем получить доступ к файлу. Если файл доступен по требуемому адресу, то можно приступать к подключению хранилища (для проверки) и переносу медиа-файлов в хранилище.
Подключаем хранилище
Для тестового подключения S3-бакета воспользуемся инструкцией которую я написал в рамках прохождения курса от Cloud.ru.
Скачиваем и активируем плагин Advanced Media Offloader.

Переходим в настройки плагина.

В настройка для Cloud.ru есть несколько нюансов.
- Cloud Provider: Any S3‑Compatible Storage (MinIO, OVHcloud, …)
- Provider Name — S3
- Access Key ID — Tenant.KEY ID
- Secret Access Key — KEY SECRET
- S3 Endpoint URL — https://s3.cloud.ru
- Region — Регион размещения бакета
- Use Path-Style Endpoint — Включено
- Bucket Name — Имя бакета
- Custom Domain (CDN URL) — CDN полученный при задании домена
Запуск синхронизации из WP-CLI
Для обработки большого количества файлов удобно использовать консольную утилиту wp-cli. Давайте рассмотрим как ей пользоваться применительно к докеризованной версии Word Press.
Подключаемся к консоли WP в докер для чего сначала находим интересующий нас контейнер.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0a3bc2fe4013 nginx:alpine "/docker-entrypoint.…" 48 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp interlanxyz-nginx-1
2993eb5bde36 wordpress:latest "docker-entrypoint.s…" 48 minutes ago Up 2 minutes 80/tcp interlanxyz-interlan-wordpress-1
0c222f7fc7fd redis:alpine "docker-entrypoint.s…" 48 minutes ago Up 2 minutes 6379/tcp interlanxyz-redis-1
e0cfbc40d482 mysql:8.0 "docker-entrypoint.s…" 48 minutes ago Up 2 minutes 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp interlanxyz-mysql-db-1
Подключаемся к интерактивному терминалу и перелогиниваемся в пользователя www-data.
$ docker exec -it 2993eb5bde36 /bin/bash
# su www-data -s /bin/bash
Устанавливаем утилиту управления wp.
$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
$ chmod +x wp-cli.phar
$ mv wp-cli.phar ./wp
Запускаем обработку.
$ ./wp advmo offload
Все доступные команды можно посмотреть на официальном сайте.




