Инструменты пользователя

Инструменты сайта


sharixopen:knowledge:operations:configuration

Это старая версия документа!


Конфигурация и secrets: контракт сборки

Тип: contract · Статус: сведения требуют сверки с действующей установкой; архитектурные правила сформулированы как целевой контракт.

Раздел: Эксплуатация Open и наблюдаемость

Разделение

.env.example описывает имена настроек без секретов. Реальная .env принадлежит экземпляру установки и не копируется в публикационные комплекты.

Изменение

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

Терминология

Установка может предоставлять настраиваемые человекочитаемые термины, но не переименовывает идентификаторы моделей и API. Контентные переводы и локализация статического UI также имеют разные источники.

Связанные понятия

Роли и installation-local настройки

bin/install.cfg ссылается на conf-real/bin/install.cfg. conf хранит примеры/генераторы, conf-real — реальные данные и локальную историю; root ignore не отменяет самостоятельный repository. Не публиковать secrets. Основные defaults в example (существующее локальное значение не заменяется):

DEPLOY_USER="sharix_open_deploy"
DEPLOY_GROUP="sharix_open_deploy"
RUNTIME_USER="sharix_open"
RUNTIME_GROUP="sharix_open"
DEPLOY_HOME=""
DEPLOY_OPERATORS_GROUP=""
DEPLOY_JOURNAL_ACCESS=1
NGINX_ENABLED=0

Пустой home означает /home/$DEPLOY_USER; пустая operators group — DEPLOY_GROUP. Первое — персональный home login/Git/tools, не root приложения; второе — Unix группа доверенных операторов, не путь. Namespace задаёт SYSTEMD_SERVICE_NAME корневого env, существующее имя сохраняется. DEPLOY_JOURNAL_ACCESS=1 даёт чтение журналов всего хоста; значение 0 не отзывает ранее выданное членство. Deploy — доверенный владелец исходников и конфигов. Это эксплуатационное разделение, не защита от злонамеренного deploy, редактирующего потребляемый root config.

Файловая политика веб-доступа

В начале физического root/module/handler env, до первого assignment:

# @env.file.web: read
Значение Веб Права runtime
hidden Нет в списке; прямое открытие 404. Читает для загрузки приложения.
read Разрешённые прежним ACL поля отображаются без изменения; POST 403. Только чтение.
write Валидируемое сохранение разрешённых параметров. Файл и атомарная замена только в отдельном owner-каталоге.

Локальный заголовок важнее example. Если обоих нет — read; root example явно write для первого запуска. Повторный/невалидный заголовок блокирует installer, web writer скрывает файл. Из веба заголовок не меняется. Политика не выдаёт Django/LDAP роль и не расширяет owner allowlist, secret widgets/file-only keys. Hidden не означает «runtime не может прочитать настройки».

Хранилище и запись

Физически: conf-real/env/root/.env, conf-real/env/<module>/.env, conf-real/env/handlers/.env. Рабочие .env и исторические адреса остаются совместимыми ссылками; conf/env/<owner> зеркалит структуру ссылками на actual data/example владельца, а не копирует secrets в Git. Миграция сохраняет байты, backups и конфликтную историю; разные physical copies/foreign symlink не затираются. Canonical env читается первым, runtime не обязан обходить старый закрытый каталог.

First-run/menu/handler selection/source/repository snapshots размещаются в изолированных conf-real/state/<owner>/ с совместимыми адресами. Runtime не получает write ко всему conf-real, systemd, nginx, sudoers или deploy home. Config read, mutable state, media/themes/local_versions, static и logs — разные классы путей. Atomic writers ставят нужные ACL до replace. Backups env: conf-real/backups/env/<owner>/<timestamp>/.env. Не делать chmod 600 после writer: он срежет named runtime ACL mask. Внешние group mode bits — это ACL mask, не полный ответ о фактических правах; проверять getfacl и actual runtime identity.

После смены заголовка из deploy login:

cd /opt/sharix-open-webapp-base &&
./bin/install.sh deploy --strict --use-current-checkouts \
  --permissions=check --deps=check --no-restart

Это обычный deploy, не config-only и не read-only. Он согласует bounded ACL до/после записи; write → read/hidden отзывает запись, не переписывая значения шаблоном. Если новая схема ещё не подготовлена, сначала пройти root bootstrap/activate из основного руководства. Не давать всему conf-real рекурсивный runtime write.

Нормализация

maybe obsolete — ключ не найден в example, а не приказ удалить значение. Generated enable flags могут быть действующими. normalize_env.py –check и module_env_layout.py –root . –check выявляют разные классы расхождений; –write не предлагает интерактивный выбор каждого unknown key. Writer запускать через installer role context, чтобы сохранить owner/ACL/backup contract. Не заменять env файлом example и не переносить вручную чужие токены.

Проверенная реализация и границы доказательств

Сверено 2026-10-27 по опубликованному Open root ec9bf2a и Open config 84597d4. Проверены исполняемые пути install.sh, install_roles.sh, install_permissions.py, deploy_control.sh, install_nginx.sh и env/state helpers; не только сообщения Git. Владелец подтвердил успешный запуск Open после исправлений. Установка nginx с новым вопросом и повторная независимая проверка Testopen ещё требуют отдельной host-приёмки. Это не объявление релиза и не подтверждение production. Редакционный status=review относится к статье, не к наличию реализации.

sharixopen/knowledge/operations/configuration.1793088196.txt.gz · Последнее изменение: — sx_knowledge_api_open

© 2022 ShariX