Хостинг медиафайлов на S3¶
Вместо того чтобы хостить медиафайлы семейного дерева на том же сервере, что и база данных Gramps, их также можно разместить на Amazon S3 или другом совместимом с API объектном хранилище. Это значительно снижает требования к хранилищу и трафику для веб-сервера Gramps.
Подготовка учетных данных¶
В вашей учетной записи AWS (или другом объектном хранилище) получите идентификатор ключа доступа и секретный ключ доступа (возможно, вам сначала потребуется создать отдельного пользователя с политикой безопасности, позволяющей доступ только к S3).
Загрузка медиафайлов¶
Чтобы загрузить существующие медиафайлы на S3, на Linux вы можете использовать локальную установку Gramps с дополнением S3 Media Uploader, которое можно установить прямо из настольного приложения Gramps. Однако требуется некоторая дополнительная настройка.
Дополнение использует библиотеку Python boto3 под капотом. Сначала вам нужно установить её с помощью
python3 -m pip install boto3
В командной строке экспортируйте идентификатор ключа доступа и секретный ключ в соответствующие переменные окружения:
export AWS_ACCESS_KEY_ID=my_access_key_id
export AWS_SECRET_ACCESS_KEY=my_secret_access_key
Теперь вы можете запустить загрузчик, выполнив следующую команду,
gramps -O "My Family Tree" -a tool \
-p "name=s3uploader,bucket_name=my_bucket_name"
заменив "My Family Tree" на имя вашего семейного дерева и my_bucket_name на полное имя вашего S3 ведра. Вам потребуется выделенное S3 ведро для вашего экземпляра Gramps Web. Если ведро еще не существует, дополнение S3 Uploader попытается его создать.
Настройка Gramps Web¶
Чтобы использовать новое S3 ведро в качестве источника медиа для Gramps Web, просто установите параметр конфигурации MEDIA_BASE_DIR опция конфигурации на s3://my_bucket_name.
При использовании Docker Compose самым простым вариантом является добавление всех переменных окружения в блок env:
env:
AWS_ACCESS_KEY_ID: my_access_key_id
AWS_SECRET_ACCESS_KEY: my_secret_access_key
MEDIA_BASE_DIR: s3://my_bucket_name
AWS_DEFAULT_REGION: eu-central-1
Если вы хотите использовать объектное хранилище, совместимое с S3, отличное от AWS (например, GCP или для локального тестирования), установите переменную окружения AWS_ENDPOINT_URL.
Синхронизация медиафайлов¶
Чтобы поддерживать медиафайлы в синхронизации между локальной установкой Gramps и медиафайлами Gramps Web, размещенными на S3, дополнение Gramps Web Sync поддерживает синхронизацию файлов через Web API.