Використання бази даних PostgreSQL¶
За замовчуванням Gramps використовує файл-системну базу даних SQLite для зберігання родинного дерева. Це працює цілком добре для Gramps Web і рекомендується для більшості користувачів. Однак, починаючи з версії 0.3.0 API Gramps Web, також підтримується сервер PostgreSQL з одним родинним деревом на базу даних, що працює за допомогою додатку Gramps PostgreSQL. З версії 1.0.0 також підтримується додаток SharedPostgreSQL, який дозволяє розміщувати кілька родинних дерев в одній базі даних, що особливо корисно при використанні разом з підтримкою багатодерев API Gramps Web.
Налаштування сервера PostgreSQL¶
Якщо ви хочете налаштувати нову базу даних для використання з PostgreSQLAddon, ви можете слідувати інструкціям у Вікі Gramps для налаштування сервера.
Альтернативно, ви також можете використовувати Docker Compose для запуску сервера PostgreSQL в контейнері на тому ж хості Docker, що й Gramps Web.
Використання контейнеризованого PostgreSQL з Gramps ускладнюється лише тим фактом, що стандартні образи PostgreSQL не мають жодних локалей, які, однак, потрібні Gramps для локалізованої колації об'єктів. Найпростіший варіант - використовувати образ gramps-postgres, випущений у цьому репозиторії. Щоб його використовувати, додайте наступний розділ до вашого docker-compose.yml:
postgres_gramps:
image: ghcr.io/davidmstraub/gramps-postgres:latest
restart: unless-stopped
environment:
POSTGRES_PASSWORD: postgres_password_admin
POSTGRES_PASSWORD_GRAMPS: postgres_password_gramps
POSTGRES_PASSWORD_GRAMPS_USER: postgres_password_gramps_user
volumes:
- postgres_data:/var/lib/postgresql/data
postgres_data: як ключ під розділом volumes: цього YAML файлу. Цей образ містить окрему базу даних для генеалогічних даних Gramps і для бази даних користувачів Gramps; кожна з них може мати окремі паролі.
Імпорт родинного дерева Gramps¶
Знову ж таки, якщо ви самостійно налаштували сервер PostgreSQL, ви можете слідувати інструкціям у Вікі Gramps для імпорту родинного дерева в базу даних.
Альтернативно, якщо ви виконали інструкції Docker Compose вище, ви можете використовувати наступну команду для імпорту XML-файлу Gramps, розташованого на вашому хості Docker:
docker compose run --entrypoint "" grampsweb \
gramps -C postgres \
-i /root/.gramps/grampsdb/my_tree.gramps \
--config=database.path:/root/.gramps/grampsdb \
--config=database.backend:postgresql \
--config=database.host:postgres_gramps \
--config=database.port:5432 \
--username=gramps --password=postgres_password_gramps
Налаштування Web API для використання з базою даних¶
Щоб налаштувати Web API для використання з базою даних PostgreSQL, додайте наступне під ключем environment: сервісу grampsweb у docker-compose.yml:
# додаток PostgreSQL припускає, що ім'я дерева
# дорівнює імені бази даних, і тут використовується
# стандартне ім'я бази даних образу PostgreSQL
TREE: postgres
# Облікові дані повинні відповідати тим, що використовуються для
# контейнера PostgreSQL
POSTGRES_USER: gramps
POSTGRES_PASSWORD: postgres_password_gramps
Використання спільної бази даних PostgreSQL у багатодеревій установці¶
При використанні багатодеревої конфігурації додаток SharedPostgreSQL є зручним варіантом для розміщення всіх дерев, також новостворених через API, в одній базі даних PostgreSQL без компромісів у приватності чи безпеці.
Щоб досягти цього, налаштуйте контейнер на основі образу gramps-postgres, як описано вище, і просто встановіть параметр конфігурації NEW_DB_BACKEND на sharedpostgresql, наприклад, через змінну середовища GRAMPSWEB_NEW_DB_BACKEND.
Використання бази даних PostgreSQL для бази даних користувачів¶
Незалежно від того, який бекенд бази даних використовується для генеалогічних даних, база даних користувачів може бути розміщена в базі даних PostgreSQL, надавши відповідний URL бази даних. Docker-образ gramps-postgres, згаданий вище, містить окрему базу даних grampswebuser, яка може бути використана для цієї мети. У цьому випадку відповідне значення для параметра конфігурації USER_DB_URI буде
postgresql://grampswebuser:postgres_password_gramps_user@postgres_gramps:5432/grampswebuser
Використання бази даних PostgreSQL для індексу пошуку¶
Починаючи з версії 2.4.0 API Gramps Web, індекс пошуку розміщується або в базі даних SQLite (за замовчуванням), або в базі даних PostgreSQL. Також для цієї мети можна використовувати образ gramps-postgres. Для індексу пошуку ми можемо використовувати базу даних gramps, надану образом, незалежно від того, чи розміщуємо ми наші генеалогічні дані в PostgreSQL чи ні (індекс пошуку та генеалогічні дані можуть співіснувати в одній базі даних). Це можна досягти, у наведеному вище прикладі, встановивши параметр конфігурації SEARCH_INDEX_DB_URI на
postgresql://gramps:postgres_password_gramps@postgres_gramps:5432/gramps
Проблеми¶
У разі виникнення проблем, будь ласка, слідкуйте за виходом журналу Gramps Web та сервера PostgreSQL. У випадку Docker це досягається за допомогою
docker compose logs grampsweb
docker compose logs postgres_grampsweb
Якщо ви підозрюєте, що є проблема з Gramps Web (або документацією), будь ласка, подайте запит на Github.