Это руководство объясняет, как включить скрытую настройку в Discourse для включения загрузок Amazon S3 (Simple Storage Service) в ваши резервные копии.
Discourse позволяет хранить медиа-загрузки на Amazon S3 для обеспечения масштабируемости и надежности. Однако по умолчанию эти загрузки не включаются в резервные копии.
В этом руководстве описывается включение скрытой настройки для добавления загрузок S3 в резервные копии, с вариантами конфигурации через консоль Rails или файл app.yml.
Использование консоли Rails
Чтобы включить загрузку S3 в резервные копии через консоль Rails, выполните следующие шаги:
Подключитесь к вашему серверу Discourse через SSH.
Войдите в контейнер Docker Discourse, выполнив:
cd /var/discourse
./launcher enter app
Запустите консоль Rails:
rails c
Включите настройку, выполнив:
SiteSetting.include_s3_uploads_in_backups = true
Выйдите из консоли и контейнера, введя:
exit
exit
Это изменение вступает в силу немедленно. Никаких дополнительных действий не требуется.
Изменение файла app.yml
Вы также можете внести это изменение, добавив настройку в секцию env: файла app.yml.
Перейдите в директорию контейнера приложения Discourse:
cd /var/discourse
Откройте файл app.yml, расположенный в containers:
nano containers/app.yml
В секции env: добавьте строку:
DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true
Сохраните файл и выйдите из редактора.
Примените изменения, пересобрав приложение:
./launcher rebuild app
Чтобы изменение вступило в силу, необходимо выполнить команду ./launcher rebuild app для применения настройки.
Я уверен, что нужно уничтожить и запустить заново, чтобы применить переменные окружения к контейнеру.
Конечно, если они выполняли обновления через Docker Manager, эти изменения будут утеряны при уничтожении контейнера, поэтому пересборка — наиболее безопасная рекомендация. Возможно, лучше рекомендовать пересборку, так как это самый надёжный способ.
Хорошо. Я не знал.
Но в чём разница между «Локальными загрузками» и папкой «Файлы, хранящиеся в S3 ‘Uploads’»?
Также, хотя я ещё не менял настройки в web_only или в консоли rails, как было указано выше, я пока выбрал только одну настройку, о которой говорится здесь.
Тем не менее, когда я запустил резервное копирование всего 10 минут назад, оно показало, что загружаются тысячи файлов (что, как я полагаю, возможно только для моего хранилища AWS S3, и само слово «Загрузка» подразумевает скачивание из удалённой папки S3).
Также отображается сообщение «Не удалось загрузить» для множества файлов. Стольких файлов. Я предположил, что если бы эти файлы находились на локальном облачном сервере, почему бы системе не включить их в резервную копию? Посмотрите на этот скриншот:
Если вам нужно извлечь их из S3 (например, если вы размещены на discourse.org и переходите на другую платформу), вам потребуется резервная копия, включающая файлы, хранящиеся в S3.
Почему вы хотите скачать свои файлы из S3?
Да, похоже, что загрузка файлов из S3 не удаётся. Я предполагаю, что ни один из них не был скачан, хотя возможно, что ваш диск переполнен (я ожидал бы ошибку о переполнении диска, но, возможно, это не так?).
Поскольку мой сайт очень-очень маленький, платить несколько долларов, которые с каждым месяцем растут из-за небольших обновлений, за хранение в AWS S3 каждый месяц становится для меня немного неудобно. Я планирую перенести папку «Uploads» (и, возможно, также папку «backup») на другого провайдера, например Google One Drive, iDrive, Hetzner или другие недорогие альтернативы.
Теперь я понимаю, что даже различные типы хранилищ AWS (от самых активных до архивных), если бы я выбрал их разумно в начале, обошлись бы мне вдвое дешевле за то же количество файлов.
Когда несколько лет назад я решил хранить свои медиа-«загрузки» в бакете AWS S3, в то время (насколько я помню) ВСЕ существующие медиафайлы, загруженные пользователями, тоже были перемещены в S3.
Кроме того, я только что проверил папку /var/discourse/shared/web_only/uploads/default/optimized/1X — в ней всего 63 файла PNG, а в /var/discourse/shared/web_only/uploads/default/original/1X — всего 3. (За исключением папки 1X, других подобных папок в директориях «uploads» или «default» нет.)
Также я пока не менял никаких настроек в консоли Rails или в YAML-файле, чтобы включить загрузку из S3 в мои резервные копии. Так почему же система показывает, что она загрузила столько «медиа-загрузок» ИЗ S3!!!
И почему не удалось загрузить так много загруженных файлов? Скриншот здесь.
Более того, моя папка загрузок в S3 занимает около 3 ГБ (32 тысячи файлов), тогда как в логах резервного копирования указано, что было загружено только около 3,2 тысячи файлов (10% от общего числа).
Очень запутанно.
Есть ли какая-то ДРУГАЯ команда Rails, чтобы дважды убедиться, что эта опция не была включена много лет назад, когда я перешёл на AWS S3?