Хостинг медіа-файлів на 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.