Администрирование сервера

На этой странице описана низкоуровневая конфигурация сервера OpenBioMaps. В современных установках OpenBioMaps обычно работает как набор сервисов Docker Compose. Веб-сервер приложения и среда выполнения PHP предоставляются контейнером app, а MapServer и PostgreSQL работают в отдельных контейнерах.

Примеры на этой странице основаны на образе приложения OpenBioMaps и эталонной конфигурации Docker Compose. Содержимое образов и определения сервисов могут меняться между выпусками. Всегда сопоставляйте эту документацию с файлами, поставляемыми с развёртываемой версией.

Не храните настоящие пароли, секреты клиентов, ключи шифрования и другие учётные данные в документации или репозитории исходного кода.

Supervisor

Supervisor — это отдельное веб-приложение для низкоуровневой настройки, обновлений и обслуживания проектов. Оно устанавливается как часть сервера OpenBioMaps и обычно доступно по одному из следующих URL-адресов:

  • https://YOUR_SERVER/supervisor/

  • https://YOUR_SERVER/supervisor.php

Точный URL-адрес зависит от конфигурации сервера и обратного прокси.

Supervisor имеет два режима работы:

Системный режим

Обеспечивает обслуживание и обновление на уровне системы, включая управление системной конфигурацией.

Режим проекта

Обеспечивает обновление и создание проектов, обслуживание базы данных, управление local_vars.php.inc и диспетчер файлов для каталога local проекта.

Режим проекта также можно сделать доступным администраторам проекта через интерфейс администрирования проекта.

Ограничьте доступ к Supervisor, предоставив его только доверенным администраторам. Используйте HTTPS и надёжный уникальный пароль, а также рассмотрите дополнительные ограничения на уровне сети.

Повторное создание пароля Supervisor

На хосте Docker пароль Supervisor можно создать повторно с помощью сценария после установки:

cd /srv/docker/openbiomaps
./obm_post_install.sh update supervisor

Точный каталог установки может отличаться. Выполните команду из каталога, содержащего сценарии установки OpenBioMaps, и проверьте её вывод на наличие ошибок.

После изменения пароля убедитесь, что Supervisor доступен, и сохраните новые учётные данные в подходящем диспетчере паролей.

Файлы системных переменных

Помимо файла local_vars.php.inc каждого проекта, OpenBioMaps использует файлы переменных системного уровня.

В настоящее время образ приложения содержит базовый файл по следующему пути:

/var/www/html/biomaps/root-site/server_vars.php.inc

Образ Docker также объявляет /etc/openbiomaps в качестве тома. Управляемая администратором системная конфигурация обычно хранится в нём, например:

/etc/openbiomaps/system_vars.php.inc

Точная связь и порядок загрузки файлов server_vars.php.inc и system_vars.php.inc могут различаться между выпусками OpenBioMaps. Не считайте эти два файла взаимозаменяемыми. Используйте Supervisor и шаблоны, поставляемые с установленным выпуском, а после обновления проверяйте фактически применённую конфигурацию.

Поскольку в эталонной конфигурации Compose каталог /etc/openbiomaps подключён из тома Docker etc_openbiomaps, внесённые в него изменения сохраняются при замене контейнера app.

В следующих разделах описаны настройки, ранее приведённые в примере system_vars.php.inc. Значения являются примерами и должны быть проверены для конкретной установки.

Настройки сети и URL-адресов

Переменная

Пример значения

Описание

USE_NON_STANDARD_HTTP_PORTS

false

Включает поддержку локальной установки, которая не находится за прокси и использует нестандартные порты HTTP. Эта настройка необязательна и отключена в примере.

OB_DOMAIN

localhost/biomaps

Общедоступный адрес сервера и путь развёртывания, используемые OpenBioMaps. Замените их фактическим именем хоста и путём. Значение должно соответствовать конфигурации обратного прокси и TLS.

POSTGRES_PORT

5432

Порт сервиса PostgreSQL, используемый OpenBioMaps.

GISDB_HOST

localhost

Хост базы данных, добавляемый в конфигурации вновь создаваемых проектов. В установке Docker обычно необходимо использовать имя или псевдоним в сети Docker, например gisdata, а не localhost.

MAPSERVER_HOST

mapserver

Хост сервиса MapServer, добавляемый в конфигурации вновь создаваемых проектов. В эталонной среде Compose mapserver — это имя сервиса Docker Compose.

Внутри контейнера localhost обозначает сам этот контейнер. Он не обозначает другой сервис Compose. Например, контейнер app обычно должен обращаться к MapServer по имени mapserver, а к базе данных — по одному из её сетевых имён или псевдонимов.

Эталонный сервис базы данных называется biomaps_db и имеет псевдонимы biomaps и gisdata. Существующие шаблоны OpenBioMaps могут ожидать один из этих псевдонимов. Перед изменением GISDB_HOST изучите конфигурацию рабочего проекта и проверьте, какое имя ожидается установленным выпуском.

Настройки каталогов

Переменная

Пример значения

Описание

OB_SYSDIR

/var/lib/openbiomaps/

Базовый каталог для постоянных системных данных OpenBioMaps. Это задокументированное значение по умолчанию, необязательное в примере.

OB_TMP

/var/lib/openbiomaps/tmp/

Каталог временных файлов OpenBioMaps. В эталонной конфигурации Compose он хранится в постоянном томе var_lib.

OB_ROOT

/var/www/html/biomaps/root-site

Корневой каталог документов приложения. В примере в конце пути нет косой черты.

OB_ROOT_SITE

/var/www/html/biomaps/root-site/

Корневой каталог сайта приложения. Некоторым частям кода приложения требуется именно такая форма с косой чертой в конце.

OB_RESOURCES

/var/www/html/biomaps/resources/

Каталог, содержащий общие ресурсы OpenBioMaps.

Не изменяйте пути без проверки образа Docker, корневого каталога документов Apache, подключённых томов, путей проектов и всех ссылающихся на них сценариев.

Подключение к системной базе данных

Эти переменные определяют подключение к системной базе данных OpenBioMaps. Они отличаются от относящихся к конкретному проекту настроек gisdb_*, описанных в руководстве по установке сервера.

Переменная

Пример значения

Описание

biomapsdb_user

Секретное значение, относящееся к конкретной установке

Пользователь PostgreSQL, используемый для доступа к системной базе данных OpenBioMaps.

biomapsdb_pass

Секретное значение, относящееся к конкретной установке

Пароль пользователя системной базы данных. Используйте надёжное случайное значение и не добавляйте его в репозиторий.

biomapsdb_name

Значение, относящееся к конкретной установке

Имя системной базы данных OpenBioMaps.

biomapsdb_host

localhost

Хост, на котором работает системная база данных. В эталонной среде Docker используйте соответствующее имя или псевдоним сервиса базы данных вместо localhost, если PostgreSQL фактически не работает в контейнере app.

POSTGIS_V

2.5

Исторический маркер версии PostGIS. Обычно устанавливать это значение не требуется, и оно может не соответствовать установленной в настоящее время версии.

Эталонный файл Compose использует образ openbiomaps/database:pg17-3.5. Имя образа указывает на более новую комбинацию PostgreSQL/PostGIS, чем в историческом примере POSTGIS_V. Не используйте POSTGIS_V для определения фактической версии сервера. Когда требуются сведения о версии, запросите их у сервера базы данных.

Доставка почты

Переменная

Пример значения

Описание

SENDMAIL

smtp

Метод доставки почты по умолчанию. Задокументированы значения sendmail и smtp. Проект может переопределить эту настройку в local_vars.php.inc.

Если выбран SMTP, настройте необходимые параметры хоста SMTP, аутентификации, отправителя, порта и защиты транспорта на соответствующем системном уровне или уровне проекта. Не храните учётные данные SMTP в общедоступных конфигурационных файлах.

Кеш

Переменная

Пример значения

Описание

CACHE

memcache

Выбирает реализацию кеша, используемую OpenBioMaps.

Эталонный образ приложения также определяет следующие значения переменных окружения по умолчанию:

Переменная окружения

Значение по умолчанию

Описание

CACHE_HOST

memcached

Имя хоста сервиса Memcached. Оно соответствует имени сервиса в эталонном файле Compose.

CACHE_PORT

11211

Порт, используемый Memcached внутри сети Docker.

Сервис memcached подключён к частной сети obm_back, и его порт не требуется публиковать на хосте Docker.

Необязательные сервисы R Shiny

Переменная

Пример значения

Описание

RSERVER_PORT_someproject

7982

Порт R Shiny Server для конкретного проекта. Замените someproject соответствующим идентификатором проекта. Настраивайте его только для проектов, в которых всё ещё используется интеграция с R Shiny.

Поддержка R Shiny является устаревшей или необязательной интеграцией. Перед её настройкой убедитесь, что она поддерживается установленным выпуском OpenBioMaps.

Поддерживаемые языки

Переменная

Пример значения

Описание

LANGUAGES

en, hu, ro

Разделённый запятыми список языков, поддерживаемых сервером. Должны быть установлены соответствующие языковые файлы.

Это системное значение не зависит от выбора языков на уровне проекта. В настройках языков проекта можно использовать только доступные на сервере языки.

Автоматические отчёты об ошибках

Переменная

Пример значения

Описание

AUTO_BUGREPORT_ADDRESS

Адрес для входящих сообщений, предоставленный сопровождающими репозитория

Включает интеграцию с системой отслеживания ошибок через адрес для входящих сообщений. Запросите соответствующий ключ или адрес для создания задач у сопровождающих репозитория OpenBioMaps.

Считайте полный адрес для входящих сообщений секретом, поскольку любой получивший его пользователь может иметь возможность создавать задачи или отправлять нежелательное содержимое. Проверяйте журналы и исходящие отчёты, чтобы убедиться, что они не содержат конфиденциальных данных проекта или пользователей.

Секрет веб-аутентификации

Переменная

Пример значения

Описание

WEB_CLIENT_SECRET

Секретное значение, относящееся к конкретной установке

Обязательный секрет, используемый веб-аутентификацией. Такое же значение должно храниться для клиента OAuth web в системной базе данных.

Значение конфигурации и соответствующее значение базы данных должны оставаться синхронизированными. Создайте надёжный случайный секрет, ограничьте доступ к нему и тщательно планируйте его ротацию, поскольку изменение только одной копии нарушит работу веб-аутентификации.

Применение изменений системных переменных

После изменения системной настройки:

  1. Проверьте синтаксис изменённой конфигурации.

  2. При необходимости перезапустите или повторно создайте затронутый сервис.

  3. Проверьте журналы сервиса.

  4. Протестируйте Supervisor и типичный проект.

  5. Протестируйте аутентификацию, доступ к базе данных, карты и фоновые задания, если изменённая настройка влияет на эти компоненты.

Например:

docker compose config
docker compose restart app
docker compose logs --tail=200 app

В старых системах точной командой Docker Compose может быть docker-compose.

Образ приложения настраивает PHP OPcache с отключённой проверкой временных меток. Поэтому работающий процесс может не обнаружить изменения файлов PHP сразу. Перезапуск контейнера app после изменения конфигурации PHP или приложения предотвращает использование устаревшего кешированного кода.

Архитектура сервисов Docker

Эталонная конфигурация Compose создаёт частную мостовую сеть с названием obm_back. Сервисы в этой сети могут взаимодействовать через имена сервисов Compose и настроенные сетевые псевдонимы.

Основные сервисы:

Сервис

Образ

Назначение

app

registry.gitlab.com/openbiomaps/web-app:latest

Запускает Apache HTTP Server, PHP, веб-приложение OpenBioMaps и Supervisor.

mapserver

openbiomaps/mapserver

Запускает сервис MapServer, используемый для отображения карт проекта.

biomaps_db

openbiomaps/database:pg17-3.5

Запускает PostgreSQL и PostGIS для системной базы данных и, в стандартной топологии, баз данных проектов.

memcached

memcached:latest

Предоставляет общий кеш приложения.

obm-server-api

registry.gitlab.com/openbiomaps/api/obm-server-api:latest

Предоставляет отдельный серверный API OpenBioMaps.

adminer

adminer

Предоставляет браузерный интерфейс администрирования базы данных.

Точный список сервисов зависит от установленного файла Compose. Необязательные сервисы могут быть отключены, удалены или заменены.

Для рабочих развёртываний рассмотрите возможность закрепления образов за проверенными тегами выпусков или неизменяемыми хешами вместо использования latest. Это делает обновления предсказуемыми и упрощает откат.

Сервис приложения: Apache и PHP

Образ app основан на официальном образе php:8.4-apache-trixie. Поэтому Apache и PHP работают в одном контейнере.

Конфигурация Apache

Образ выполняет следующую настройку Apache:

  • включает модули headers, proxy, proxy_http, rewrite и ssl;

  • изменяет корневой каталог документов по умолчанию на /var/www/html/biomaps/root-site; и

  • устанавливает конфигурацию Apache для OpenBioMaps как /etc/apache2/conf-enabled/openbiomaps.conf.

Эталонный файл Compose публикует порты контейнера 80 и 443 на тех же портах хоста:

80:80
443:443

Если другой обратный прокси завершает соединение TLS, может потребоваться изменить опубликованные порты и конфигурацию виртуального хоста Apache. Убедитесь, что общедоступные схема, хост, путь и перенаправляемые заголовки соответствуют OB_DOMAIN и URL-адресам проектов.

Пользовательскую конфигурацию Apache следует предоставлять через сопровождаемый образ, подключение bind mount или другой воспроизводимый механизм развёртывания. Не редактируйте работающий контейнер напрямую, поскольку эти изменения теряются при его замене.

Эталонный файл Compose содержит закомментированные примеры подключения сертификатов TLS и пользовательского виртуального хоста SSL. Создавайте и обновляйте сертификаты вне контейнера, если только в развёртывании намеренно не используется другой способ управления сертификатами.

После изменения конфигурации Apache проверьте её внутри контейнера:

docker compose exec app apache2ctl configtest
docker compose restart app
docker compose logs --tail=200 app

Конфигурация PHP

Образ приложения устанавливает расширения PHP, необходимые OpenBioMaps, включая поддержку PostgreSQL, PDO PostgreSQL, интернационализации, ZIP, GD, Exif, Memcached, YAML и mcrypt.

Эталонный файл Compose демонстрирует переопределение настроек PHP посредством подключения отдельных файлов INI в /usr/local/etc/php/conf.d:

./php-date.timezone.ini -> /usr/local/etc/php/conf.d/php-date.timezone.ini
./php-upload.ini        -> /usr/local/etc/php/conf.d/php-upload.ini

Этот подход можно использовать для таких настроек, как:

  • date.timezone;

  • upload_max_filesize;

  • post_max_size;

  • memory_limit;

  • max_execution_time; и

  • настройки сеансов.

При настройке загрузки файлов согласуйте все соответствующие ограничения. Например, post_max_size должен быть достаточно велик для всего запроса, а не только для загружаемого файла. Обратный прокси может устанавливать дополнительное ограничение размера запроса.

Проверьте фактически применённую конфигурацию PHP внутри контейнера вместо того, чтобы считать подключённый файл загруженным:

docker compose exec app php --ini
docker compose exec app php -i
docker compose logs --tail=200 app

После изменения подключённых файлов INI перезапустите сервис app.

Журналы приложения

Образ создаёт файл /var/log/openbiomaps.log и назначает его пользователю веб-сервера. Эталонный файл Compose подключает этот файл с хоста Docker:

./openbiomaps.log -> /var/log/openbiomaps.log

Файл на хосте должен существовать и иметь разрешения, позволяющие пользователю www-data контейнера записывать в него. Также проверяйте стандартный вывод контейнера и журналы Apache:

docker compose logs --tail=200 app
docker compose logs -f app

Настройте ротацию файлов журналов на хосте, чтобы они не заняли всё доступное дисковое пространство. Не записывайте в журналы пароли, токены, полные строки подключения к базе данных или конфиденциальные данные наблюдений.

Сервис MapServer

MapServer работает в отдельном сервисе mapserver. Контейнер app обычно обращается к нему по имени хоста mapserver в частной сети Docker.

Эталонная конфигурация Compose предоставляет MapServer общий доступ к следующим ресурсам:

Источник

Путь в контейнере

Назначение

Том mapserver_log

/tmp/mapserver

Общие журналы и временные данные MapServer.

Том var_lib

/var/lib/openbiomaps

Общие системные данные OpenBioMaps.

Том projects

/var/www/html/biomaps/root-site/projects

Файлы проектов и относящиеся к конкретным проектам mapfile.

./openbiomaps.conf

/etc/apache2/conf-enabled/openbiomaps.conf

Конфигурация Apache контейнера MapServer.

./00_msencrypt-wrapper.conf

/etc/apache2/conf-enabled/00_msencrypt-wrapper.conf

Конфигурация Apache для оболочки шифрования MapServer.

./msencrypt-wrapper.pl

/usr/local/bin/msencrypt-wrapper.pl

Оболочка, используемая сервисом MapServer.

Изменения подключённой с хоста конфигурации Apache для MapServer или оболочки следует проверить, после чего необходимо перезапустить сервис mapserver:

docker compose exec mapserver apache2ctl configtest
docker compose restart mapserver
docker compose logs --tail=200 mapserver

Mapfile проектов обычно управляются через интерфейс администрирования проекта OpenBioMaps и Supervisor. Поскольку том projects является общим, приложение и MapServer могут обращаться к одним и тем же файлам проектов.

В эталонном файле Compose MapServer не публикует порт хоста. Это сделано намеренно: запросы обычно должны проходить через приложение OpenBioMaps или его настроенный прокси, а не напрямую из интернета к MapServer.

Для MapCache требуется дополнительная настройка, и он не включается одним лишь определением URL-адреса MapCache. Если добавляется MapCache, задокументируйте его хранилище, очистку кеша, ограничения ресурсов и сетевую доступность.

Сервис PostgreSQL и PostGIS

Сервис biomaps_db запускает PostgreSQL и PostGIS с использованием образа openbiomaps/database:pg17-3.5. Его каталог данных хранится в постоянном томе biomaps_data:

/var/lib/postgresql/data

Сервис имеет следующие имена в частной сети:

  • имя сервиса Compose: biomaps_db;

  • сетевой псевдоним: biomaps; и

  • сетевой псевдоним: gisdata.

Используйте имя, ожидаемое установленной конфигурацией OpenBioMaps. Не используйте localhost из контейнера app или mapserver для обращения к этому сервису базы данных.

В эталонной конфигурации порт базы данных не публикуется на хосте Docker. Это уменьшает доступность извне и достаточно для сервисов приложения, подключённых к obm_back. Публикуйте PostgreSQL только тогда, когда требуется внешний доступ, а затем ограничьте его с помощью межсетевого экрана, средств контроля доступа PostgreSQL и, где уместно, TLS.

Учётные данные базы данных

Эталонный файл Compose не задаёт фиксированный POSTGRES_PASSWORD напрямую. В комментариях указано, что образ базы данных создаёт случайный пароль, если учётные данные не предоставлены явно.

Для управления учётными данными используйте процесс установки и Supervisor. Перед заменой или повторным созданием сервиса базы данных выясните, где хранятся созданные учётные данные, и убедитесь в наличии проверенной резервной копии.

Не изменяйте пароль базы данных без обновления каждой использующей его системной конфигурации и конфигурации проекта.

Хранение и резервное копирование базы данных

Том biomaps_data содержит постоянные данные базы данных. Простое копирование тома во время активной записи PostgreSQL само по себе не гарантирует согласованную резервную копию базы данных. Используйте учитывающие особенности PostgreSQL инструменты резервного копирования или поддерживаемую процедуру архивирования OpenBioMaps.

Регулярно проверяйте восстановление в изолированной среде. Резервную копию, которая не была успешно восстановлена, не следует считать проверенной.

Для проверки сервиса базы данных:

docker compose ps biomaps_db
docker compose logs --tail=200 biomaps_db

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

Отдельная база данных проекта

Эталонный файл Compose содержит закомментированный пример отдельного сервиса базы данных gisdata. Если системная база данных и базы данных проектов разделены:

  • измените сетевые псевдонимы Docker;

  • обновите системные настройки и настройки хоста базы данных проекта;

  • настройте отдельные учётные данные;

  • обновите процедуры резервного копирования и мониторинга; и

  • проверьте доступ из app и mapserver.

Не публикуйте порт базы данных, если к ней не должны подключаться клиенты за пределами сети Docker.

Сервис Memcached

Сервис memcached предоставляет кеш приложения. Контейнер app обращается к нему как к memcached:11211 через частную сеть Docker.

В эталонной конфигурации Memcached не поддерживает аутентификацию. Не публикуйте его порт. Если используется пользовательская сеть Docker, убедитесь, что подключаться к нему могут только доверенные сервисы приложения.

Кешированные данные являются временными и не должны считаться постоянным хранилищем. Перезапуск или замена Memcached может очистить кешированные записи, не удаляя основные данные OpenBioMaps.

Сервис API

Сервис obm-server-api запускает отдельный образ API OpenBioMaps. Он:

  • подключает файл .env развёртывания только для чтения;

  • запускает сценарий инициализации перед запуском Apache; и

  • в эталонной конфигурации публикует порт 80 контейнера как порт 9001 хоста.

Проверьте каждое значение в .env и ограничьте разрешения файла на хосте Docker. Файл может содержать учётные данные или другие секреты.

Публикация 9001:80 делает API доступным на всех интерфейсах хоста, если доступ не ограничен средствами Docker или межсетевого экрана. В рабочей среде предпочтительно направлять API через настроенный обратный прокси HTTPS или привязать его к ограниченному интерфейсу.

Проверяйте ошибки инициализации и выполнения API с помощью:

docker compose logs --tail=200 obm-server-api

Сервис администрирования базы данных

Эталонная конфигурация включает Adminer и публикует его на порте 9882 хоста.

Интерфейс администрирования базы данных имеет критическое значение для безопасности. Не открывайте к нему доступ из интернета без надёжных дополнительных средств контроля доступа. Предпочтительно использовать один из следующих подходов:

  • включать его только на время обслуживания;

  • привязать его к интерфейсу обратной связи;

  • ограничить его с помощью межсетевого экрана или частной сети; или

  • обращаться к нему через защищённый административный туннель.

Например, для привязки опубликованного порта к localhost следует использовать сопоставление портов Compose, эквивалентное 127.0.0.1:9882:8080.

Удалите или отключите сервис, когда он не требуется.

Постоянные тома

Эталонная конфигурация Compose определяет следующие именованные тома:

Том

Назначение

root-private

Закрытые файлы приложения в /var/www/html/biomaps/root-site/private.

projects

Каталоги проектов, общие для приложения и MapServer.

var_lib

Постоянные системные данные OpenBioMaps в /var/lib/openbiomaps.

mapserver_log

Общие журналы и временные файлы MapServer в /tmp/mapserver.

etc_openbiomaps

Управляемая администратором конфигурация OpenBioMaps в /etc/openbiomaps.

biomaps_data

Данные PostgreSQL в /var/lib/postgresql/data.

Именованные тома сохраняются при обычной замене контейнера, но их всё равно можно удалить явно. Включите все тома, содержащие необходимые данные или конфигурацию, в план резервного копирования и аварийного восстановления.

Файл Compose также показывает, как именованный том можно заменить подключением bind mount. Подключения bind mount упрощают проверку путей на хосте, но требуют правильных абсолютных путей, владельцев, разрешений и процедур резервного копирования.

Процесс настройки

Выбирайте механизм настройки в соответствии с типом параметра:

Тип конфигурации

Рекомендуемый механизм

Системные переменные OpenBioMaps

Supervisor и постоянный том /etc/openbiomaps.

Переменные проекта

Интерфейс администрирования проекта или режим проекта Supervisor.

Настройки Apache в app

Сопровождаемый пользовательский образ или явное подключение конфигурации.

Настройки PHP

Файлы INI, подключённые в /usr/local/etc/php/conf.d.

Настройки Apache для MapServer

Файлы хоста, подключённые в контейнер mapserver.

Mapfile проекта

Интерфейс администрирования проекта или Supervisor с хранением в общем томе projects.

Настройки базы данных

Окружение Compose, конфигурация OpenBioMaps и поддерживаемый образом базы данных механизм настройки.

Секреты

Файлы окружения с ограниченным доступом или специализированный механизм управления секретами.

Не вносите важные изменения только внутри работающего контейнера. Такие изменения невоспроизводимы и исчезают при замене контейнера.

После изменения файла Compose:

docker compose config
docker compose pull
docker compose up -d
docker compose ps
docker compose logs --tail=200

Перед обновлением ознакомьтесь с примечаниями к выпуску и создайте проверенную резервную копию. Не загружайте и не развёртывайте образы latest в рабочей среде вслепую.

Рекомендуемые запланированные задания

Запланированные задачи можно запускать с хоста Docker с помощью cron или аналогичного таймера systemd. Используйте абсолютные пути, сохраняйте журналы и убедитесь, что перекрывающиеся запуски не могут повредить данные.

Приведённые ниже примеры необходимо адаптировать к конкретной установке. Перед добавлением в расписание протестируйте каждую команду вручную.

Обновления Docker

Репозиторий сценариев OpenBioMaps содержит сценарий автоматического обновления:

https://github.com/OpenBioMaps/scripts/tree/master/docker-auto-update

Пример записи cron:

# m h  dom mon dow   command
0 4,16 * * * /srv/docker/openbiomaps/auto_update.sh > /srv/docker/openbiomaps/system_update_job.log 2>&1

Автоматические обновления рабочей среды сопряжены с эксплуатационным риском. Перед их включением определите:

  • как создаются и проверяются резервные копии;

  • как выполняются миграции базы данных;

  • как обнаруживаются неудачные обновления;

  • как регистрируются версии образов;

  • как выполняется откат; и

  • кто получает уведомления об ошибках.

Задания архивирования

Сценарий архивирования доступен по адресу:

https://github.com/OpenBioMaps/scripts/blob/master/obm_archive.sh

Он использует .archive_list.txt и obm_archive_settings.sh. Пример расписания:

# m h  dom mon dow   command
0 2 * * *  /path_to/obm_archive.sh normal
15 2 * * * /path_to/obm_archive.sh system
15 3 1 * * /path_to/obm_archive.sh full
0 5 * * *  /path_to/obm_archive.sh clean
# Synchronise archives to a remote server
0 4 * * *  /path_to/obm_archive.sh sync remote_user@remote-server.example /remote_path_to_archives

Для установок Docker следуйте инструкциям в конце obm_archive_settings.sh.

Храните по меньшей мере одну резервную копию за пределами хоста OpenBioMaps. Защитите учётные данные удалённого резервного копирования и регулярно проверяйте восстановление.

Средство запуска фоновых заданий

Для проектов, использующих фоновые задания, необходимо регулярно запускать их средство выполнения jobs.php.

Пример:

# m h  dom mon dow   command
*/5 * * * * /usr/bin/docker compose -f /srv/docker/openbiomaps/docker-compose.yml exec -u www-data -T app php /var/www/html/biomaps/root-site/projects/PROJECTTABLE/jobs.php

Замените PROJECTTABLE каталогом или идентификатором проекта и проверьте путь, используемый установленным выпуском.

Cron работает в ограниченном окружении. Используйте абсолютный путь к Docker и при необходимости явно укажите каталог проекта Compose. В системах, использующих устаревшую команду, исполняемым файлом вместо этого может быть /usr/local/bin/docker-compose.

Создайте отдельную запись для каждого проекта, которому требуется фоновая обработка. Контролируйте код завершения и журналы, а также предотвращайте параллельные запуски, если задание может выполняться дольше интервала планирования.

Эксплуатационные проверки

После установки или изменения конфигурации проверьте состояние сервисов:

docker compose config
docker compose ps
docker compose logs --tail=200 app
docker compose logs --tail=200 mapserver
docker compose logs --tail=200 biomaps_db
docker compose logs --tail=200 memcached

Затем выполните проверку из приложения:

  1. Вход в Supervisor работает.

  2. Общедоступная страница проекта загружается через HTTPS.

  3. Аутентифицированный пользователь может войти в систему и выйти из неё.

  4. Приложение может читать и записывать разрешённые записи базы данных.

  5. Общедоступные и закрытые карты отображаются правильно.

  6. Загрузка файлов учитывает настроенные ограничения.

  7. Доставка электронной почты работает, если она настроена.

  8. Фоновые задания обрабатываются.

  9. Резервное копирование завершается, и данные можно восстановить.

  10. Административные сервисы доступны не шире, чем предусмотрено.

Для каждого развёртывания в рабочей среде регистрируйте версии образов, изменения конфигурации, результаты тестирования и процедуру отката.