sharixopen:knowledge:operations:installation_migration
Различия
Показаны различия между двумя версиями страницы.
| sharixopen:knowledge:operations:installation_migration [2026/10/27 08:03] – [sharixknowledge] approved package sx_knowledge_api_open | sharixopen:knowledge:operations:installation_migration [2026/10/28 15:00] (текущий) – [sharixknowledge] approved package sx_knowledge_api_open | ||
|---|---|---|---|
| Строка 5: | Строка 5: | ||
| " | " | ||
| " | " | ||
| - | " | + | " |
| " | " | ||
| " | " | ||
| Строка 26: | Строка 26: | ||
| " | " | ||
| }, | }, | ||
| - | " | + | " |
| " | " | ||
| } | } | ||
| </ | </ | ||
| - | ====== Open: перенос | + | ====== |
| ~~NOCACHE~~ | ~~NOCACHE~~ | ||
| - | **Раздел: | + | **Раздел: |
| + | Связанные инструкции: | ||
| + | [[sharixopen: | ||
| + | [[sharixopen: | ||
| - | ===== Это maintenance, | + | ===== Область сценария ===== |
| - | Сначала backup БД, media, | + | Это разовая maintenance-процедура существующей установки ShariX Open. Она |
| - | зафиксировать namespace/порты. Остановить только main и handlers переносимой | + | перемещает всё дерево |
| - | установки. Production/ | + | ''/ |
| - | venv не заменяет backup и проверку отсутствия незаписанных | + | работу на deploy/ |
| + | Другой путь допустим; в командах нужно | ||
| + | Пример не задаёт hostname, namespace, BIND или роли по имени | ||
| - | Дерево допускается в /opt или | + | Подтвердить наличие актуального штатного backup БД, media и конфигурации; |
| - | для непривилегированного | + | уже сделанную |
| - | не строить инструкцию на обязательном наличии обеих копий. | + | Назначить окно |
| - | '' | + | останавливаются. '' |
| - | родительский ignore не означает, что | + | independent nested Git repositories перемещаются целиком, даже если родитель |
| - | также содержит код, не только | + | показывает их как ignored. Они |
| - | '' | + | Общий runtime обработчиков принадлежит '' |
| + | отдельный runtime для этой установки. | ||
| - | ===== Что проверить | + | ===== 1. Проверить |
| - | - Рабочие symlinks .env, bin/ | + | Под root, пока |
| - | - Новые canonical env находятся в conf-real/env/< | + | <code bash> |
| - | - Systemd WorkingDirectory/ | + | cd / |
| - | - Старый namespace не переименовывать для | + | pwd |
| - | - Venv после mv проверить штатным venv_paths.py; | + | git status --short --branch |
| - | - Nginx alias/ | + | git -c core.pager=cat log -1 --oneline |
| + | ls -ld conf conf-real | ||
| + | ls -l .env bin/install.cfg | ||
| + | grep -E ' | ||
| + | </ | ||
| + | В вывод не отправлять полную '' | ||
| + | миграции каждого владельца. Корректные | ||
| + | истории соответствующей ветки до обновления; | ||
| + | Если конфигурация или код отличаются от upstream, сначала разобраться с diff. | ||
| + | Не делать reset/ | ||
| - | Не делать массовую замену строк во всём | + | Для чистого root checkout на '' |
| - | могут законно содержать старый root. Не удалять migration history/ | + | <code bash> |
| - | зелёной проверки. | + | git -c core.pager=cat pull --ff-only origin master && |
| - | и выбора актуального active owner, автоматическое слияние | + | ./bin/repositories.sh pull && |
| + | ./ | ||
| + | </ | ||
| + | Если фактическая корневая ветка другая, выбирать её осознанно; пример не | ||
| + | переключает её автоматически. Helper | ||
| + | checkout по их configured branches. Локальный branding deployment branch | ||
| + | не заменяется | ||
| + | Если | ||
| - | ===== Порядок восстановления ===== | + | ===== 2. Остановить только эту установку и выполнить mv ===== |
| - | Использовать | + | Ниже namespace читает штатный helper, без запуска Django и старого venv. |
| - | sync-install-cfg → root bootstrap --permissions=repair → новая deploy session → | + | Работать в одной root-сессии; |
| - | публикация согласованных owner changes → deploy --no-restart (при | + | сломанную ссылку |
| - | --deps=rebuild) → root activate → deploy restart → функциональная приёмка. | + | <code bash> |
| - | Рутинный installer не нужно повторять ради отдельного restart/ACL failure. | + | cd / |
| - | Изменения installation-local настроек и secrets не отправлять в публичный Git. | + | source bin/ |
| + | SX_SERVICE=" | ||
| + | systemctl stop " | ||
| + | test ! -e / | ||
| + | test ! -L / | ||
| + | mv -- /root/ | ||
| + | cd / | ||
| + | </ | ||
| + | Glob заключён в кавычки: instances ищет systemctl. Не останавливать глобальные | ||
| + | '' | ||
| + | units этой | ||
| + | проверить принадлежность, | ||
| + | и для дальнейших действий | ||
| - | ===== Кому принадлежат роли | + | ===== 3. Восстановить ссылки штатным relocate |
| - | Deploy имеет home, Bash, понятный prompt | + | Запускается |
| - | Runtime — отдельный locked account с /nonexistent | + | <code bash> |
| - | Операторы явно включаются | + | ./ |
| - | полномочия | + | </ |
| - | Пустой DEPLOY_HOME означает / | + | Это preview: проверить namespace, old/new root и перечисленные пути. После |
| - | Пустой DEPLOY_OPERATORS_GROUP означает DEPLOY_GROUP; | + | успешной проверки плана: |
| - | Новый login обязателен | + | <code bash> |
| + | ./ | ||
| + | ./ | ||
| + | </ | ||
| + | Скрипт проверяет | ||
| + | root/ | ||
| + | и их '' | ||
| + | '' | ||
| + | сохраняются; чужие или | ||
| + | Создаётся приватная копия | ||
| - | ===== Проверенная реализация и границы доказательств | + | '' |
| - | Сверено | + | домены, |
| - | [[https://git.sharix-app.org/ShariX_Open/ | + | не запускает сервисы и не обновляет код. Исторические backup/ |
| - | и Open config | + | могут законно содержать старый root. Массовый sed по всему дереву запрещён. |
| - | [[https://git.sharix-app.org/ShariX_Open/sharix-open-config/ | + | Конфликт старых/ |
| - | Проверены исполняемые пути | + | требует сравнения и явного решения, |
| - | deploy_control.sh, install_nginx.sh и env/state helpers; не только сообщения Git. | + | |
| - | Владелец подтвердил успешный запуск Open после исправлений. Установка nginx | + | ===== 4. Настроить роли и nginx ===== |
| - | с новым вопросом и повторная независимая проверка | + | Проверить фактический '' |
| - | отдельной | + | установки; существующие корректные имена сохраняются: |
| - | Редакционный '' | + | <code bash> |
| + | DEPLOY_USER=" | ||
| + | DEPLOY_GROUP=" | ||
| + | RUNTIME_USER=" | ||
| + | RUNTIME_GROUP=" | ||
| + | DEPLOY_HOME="" | ||
| + | DEPLOY_OPERATORS_GROUP="" | ||
| + | DEPLOY_JOURNAL_ACCESS=1 | ||
| + | NGINX_ENABLED=1 | ||
| + | NGINX_SERVER_NAMES=" | ||
| + | NGINX_UPSTREAM=" | ||
| + | NGINX_SITE_CONFIG_PATH="/ | ||
| + | NGINX_SERVICE_NAME=" | ||
| + | </ | ||
| + | Домены example заменить | ||
| + | установки. Site path должен попадать в настоящий http include nginx; ALT и | ||
| + | другие дистрибутивы могут использовать разные каталоги. Worker user/ | ||
| + | в '' | ||
| + | фиктивного worker и не менять глобального пользователя всех сайтов. | ||
| + | '' | ||
| + | '' | ||
| + | Existing values, '' | ||
| + | defaults. Если до исправления уже появились конфликтующие дубли, сравнить | ||
| + | backup и исправить только нужные параметры; | ||
| + | поверх актуальных URL/ | ||
| + | |||
| + | Runtime имеет locked account, ''/ | ||
| + | Deploy имеет отдельный home, Bash, Git identity и prompt с текущим каталогом. | ||
| + | Пустой '' | ||
| + | проекта. Operators group — имя Unix-группы; | ||
| + | Администратор явно включает доверенных людей в эту группу. Journal opt-in даёт | ||
| + | чтение журнала всего хоста; для применения supplementary groups нужен новый login. | ||
| + | |||
| + | В '' | ||
| + | и реальные '' | ||
| + | запуске приложения. Секреты и installation-local файлы в публичный Git не входят. | ||
| + | |||
| + | ===== 5. Разовый root bootstrap с repair ===== | ||
| + | <code bash> | ||
| + | cd /opt/ | ||
| + | ./bin/install.sh bootstrap --strict --use-current-checkouts --permissions=repair | ||
| + | </ | ||
| + | Этот явный repair нужен после root-owned установки и смены static group при | ||
| + | первом '' | ||
| + | START/DONE/WAIT отражают фазу, второй installer параллельно не запускать. | ||
| + | Обычный '' | ||
| + | Сообщение «run root bootstrap» означает полный вызов выше, не команды | ||
| + | '' | ||
| + | |||
| + | При отсутствии nginx скрипт спрашивает об установке пакета. Существующий пакет | ||
| + | не переустанавливается. Отказ/ошибка останавливают проход. Missing apt packages | ||
| + | устанавливаются после apt-get update, без полного upgrade ОС. При первом Git | ||
| + | identity предлагаются данные example или собственные; | ||
| + | не Git password и не копирование credentials root. Проверить назначенные роли, | ||
| + | права конфигов/ | ||
| + | |||
| + | ===== 6. Воссоздать venv и подготовить приложение от deploy ===== | ||
| + | Открыть новый login configured deploy user; для имён примера: | ||
| + | <code bash> | ||
| + | su - sharix_open_deploy | ||
| + | </ | ||
| + | После физического mv старый venv с абсолютными shebang/ | ||
| + | активировать и не переиспользовать. Для диагностики | ||
| + | '' | ||
| + | <code bash> | ||
| + | cd / | ||
| + | ./ | ||
| + | --permissions=check --deps=rebuild --no-restart | ||
| + | </code> | ||
| + | Rebuild разрешён | ||
| + | Prepared flag не обновляет Git: код уже получен на шаге 1. Deploy всё равно | ||
| + | делает dependency/ | ||
| + | prompts по реальной задаче. Это не read-only. Если rebuild уже успешно прошёл, | ||
| + | не повторять его из-за последующей отдельной ошибки; | ||
| + | выбирать '' | ||
| + | |||
| + | ===== 7. Root activate, затем deploy restart ===== | ||
| + | Вернуться в root-сессию после | ||
| + | <code bash> | ||
| + | cd / | ||
| + | ./ | ||
| + | </ | ||
| + | Фаза материализует systemd и nginx, проверяет runtime identity и точные sudo | ||
| + | grants. Для nginx проверяет синтаксис и фактическое включение сайта, создаёт | ||
| + | ссылки на '' | ||
| + | start/ | ||
| + | успешной фазы не требуется. Приложение и handlers запускаются отдельно. | ||
| + | |||
| + | Под deploy: | ||
| + | <code bash> | ||
| + | cd / | ||
| + | ./ | ||
| + | ./ | ||
| + | </ | ||
| + | Restart | ||
| + | запускает основной сервис и настроенные handler modes, подтверждает active и | ||
| + | disabled states, а при | ||
| + | '' | ||
| + | Отказ restart не требует повторного полного deploy/ | ||
| + | |||
| + | ===== 8. Проверить доступность по слоям ===== | ||
| + | Под deploy; фактический hostname | ||
| + | <code bash> | ||
| + | SX_HOST=" | ||
| + | SX_UPSTREAM=" | ||
| + | curl --noproxy ' | ||
| + | curl --noproxy ' | ||
| + | curl --noproxy ' | ||
| + | http:// | ||
| + | </ | ||
| + | HTML допускает штатный redirect, CSS должен дать 200 и '' | ||
| + | внешний HTTPS, вход, нужный бизнес-сценарий и functional health XMPP handlers. | ||
| + | В схеме HTTPS proxy → nginx установки → Gunicorn внешний proxy обращается | ||
| + | к доступному адресу nginx установки на HTTP:80, сохраняя Host и корректную | ||
| + | proxy-chain схему. Его TLS/ | ||
| + | не доказывает доступность порта 80; внешний 502 не лечится сменой DEBUG. | ||
| + | '' | ||
| + | |||
| + | ===== Границы доказательств и история ===== | ||
| + | Порядок сверён 2026-10-28 с опубликованным кодом ShariX Open: актуальные ссылки | ||
| + | и SHA приведены в [[sharixopen: | ||
| + | Предыдущая source-проверка 2026-10-27 | ||
| + | '' | ||
| + | Этот | ||
| + | соответствует новым фазам. Успех одного переноса не заменяет приёмку следующего | ||
| + | хоста, внешнего HTTPS и бизнес-сценариев. Это не объявление релиза. | ||
| + | Редакционный '' | ||
| ~~SHARIX_KNOWLEDGE_RELATED~~ | ~~SHARIX_KNOWLEDGE_RELATED~~ | ||
sharixopen/knowledge/operations/installation_migration.txt · Последнее изменение: — sx_knowledge_api_open