type: standard
aspect: process
title: "ОПЕРАЦИИ IT ПРОЕКТА"
version: 1.0.0
date: 2026-02-19
status: active
Версия: 2.0.0
Дата: 2026-02-14
Назначение: Окружения, deployment, backup, rollback, безопасность
Основы: IT_PROJECTS.md
Инициализация: PROJECT_INIT.md
Разработка: PROJECT_DEV.md
ЧАСТЬ 1: ОКРУЖЕНИЯ
├── 1.1 Два режима работы
├── 1.2 LEGACY vs NEXT
├── 1.3 Структура окружений
└── 1.4 PREVIEW окружение
ЧАСТЬ 2: БЕЗОПАСНОСТЬ
├── 2.1 Контрольные точки (backup)
├── 2.2 Не чинить ядро (откат)
├── 2.3 Один шаг = одна проверка
├── 2.4 Записывать всё (DEVLOG)
├── 2.5 Git после проверки
├── 2.6 Откат немедленно
└── 2.7 Правило удалённых изменений
ЧАСТЬ 3: DEPLOYMENT
├── 3.1 Процесс деплоя
├── 3.2 Проверка перед deploy
└── 3.3 Rollback при ошибке
ПРАВИЛО: В начале работы определить режим.
РЕЖИМ 1: ПОЛНЫЙ ЦИКЛ (DEV → STAGING → PRODUCTION)
Когда использовать:
- E-commerce (деньги!)
- Финансы, банки
- Медицина, персональные данные
- Большая аудитория (>10k пользователей)
- Высокая стоимость ошибки
Окружения:
DEV → разработка
STAGING → точная копия prod, финальные тесты
PRODUCTION → боевой
Правило: STAGING = точная копия PRODUCTION (БД, версии, конфиг)
Workflow:
1. Разработка на DEV
2. Деплой на STAGING
3. Тесты на STAGING (копия prod)
4. Если OK → деплой на PRODUCTION
5. Если НЕ OK → фикс на DEV → повтор с шага 2
РЕЖИМ 2: БЫСТРЫЙ ЦИКЛ (DEV → PRODUCTION)
Когда использовать:
- MVP (быстрый старт)
- Внутренние инструменты (<100 пользователей)
- Низкий риск (блоги, контент)
- Нужна скорость релизов
- Малый бюджет
Окружения:
DEV → разработка + ВСЕ тесты
PRODUCTION → релиз + мониторинг
Правило: На DEV делаем ВСЁ. PROD = только мониторинг и hotfix.
Workflow:
1. Разработка на DEV
2. Все тесты на DEV
3. Если OK → деплой на PRODUCTION
4. Мониторинг PRODUCTION
5. Hotfix если что-то сломалось
LEGACY (текущий рабочий проект):
Domain: site.ru
Status: production (работает)
Version: v1.x.x
Поддержка: минимальная (только критические баги)
NEXT (переделка с нуля):
Domain: new.site.ru → (после миграции) → site.ru
Status: в разработке
Version: v2.0.0
Цель: заменить LEGACY
Схема миграции:
LEGACY (v1.x.x) NEXT (v2.0.0)
site.ru (работает) DEV → PREVIEW → PRODUCTION
↓
После миграции:
site.ru → archive.site.ru (выключить)
new.site.ru → site.ru (DNS переключение)
Когда использовать LEGACY/NEXT:
- Переход на новую CMS (Drupal 10 → 11)
- Полный редизайн
- Смена архитектуры
- Новая версия продукта
Пока идёт разработка NEXT:
- LEGACY работает в проде
- NEXT разрабатывается параллельно
- Два независимых проекта
- Миграция данных в момент переключения
LEGACY проект (режим полного цикла):
| Окружение | Домен | Где лежит | Runtime |
|---|---|---|---|
| DEV | localhost | Локально | dev-сервер |
| STAGING | stage.site.ru | Прод-сервер | отдельная папка |
| PRODUCTION | site.ru | Прод-сервер | prod |
Структура на сервере:
/home/user/
├── site.ru/ ← PRODUCTION
│ ├── web/
│ ├── vendor/
│ └── .env → PROD
│
└── stage.site.ru/ ← STAGING (копия prod)
├── web/
├── vendor/
└── .env → STAGE
NEXT проект (режим быстрого цикла):
| Окружение | Домен | Где лежит | Назначение |
|---|---|---|---|
| DEV | localhost | Локально | Разработка |
| PREVIEW | new.site.ru | Прод-сервер | Предпросмотр NEXT |
| PRODUCTION | site.ru | Прод-сервер | После миграции |
Workflow NEXT:
1. Разработка на DEV (localhost)
2. Деплой на PREVIEW (new.site.ru)
3. Тесты на PREVIEW
4. Миграция: new.site.ru → site.ru
PREVIEW = публичная демонстрация NEXT продукта
Назначение:
- Показать клиенту/команде новую версию
- Тестирование на prod-данных
- Acceptance testing
- Pre-production проверка
Характеристики:
- Домен: new.site.ru или preview.site.ru
- Данные: копия prod БД
- Код: последняя версия NEXT
- Доступ: публичный или закрытый (basic auth)
Когда использовать:
- Разработка NEXT продукта параллельно LEGACY
- Нужен публичный preview для демо
- Acceptance testing перед миграцией
Отличие от STAGING:
STAGING:
- Копия ТЕКУЩЕГО прода
- Тестируем изменения LEGACY продукта
- Перед деплоем в PRODUCTION
PREVIEW:
- НОВЫЙ продукт (NEXT)
- Демо и тесты НОВОЙ версии
- Перед МИГРАЦИЕЙ на PRODUCTION
ПРАВИЛО: Перед изменением — backup. Если сломалось — откат.
Уровни backup:
| Уровень | Что | Когда | Где |
|---|---|---|---|
| L1 Файлы | Модули, код | Перед деплоем | arh/ + timestamp |
| L2 БД | Дамп БД | Перед миграцией БД | arh/sql/ + timestamp |
| L3 Vanilla | Голый дистрибутив | После установки CMS | ~/backups/vanilla/ |
| L4 Система | Весь проект | Перед большими изменениями | $INFRA/backups/ |
Именование:
{тип}_{дата}_{время}.{ext}
vanilla-20260213-110019.tar.gz ← L3: Голый дистрибутив
modules-before-deploy-20260213-143022.tar.gz ← L1
db-before-migration-20260213-143505.sql.gz ← L2
full-backup-20260213-150000.tar.gz ← L4
Когда делать:
- L1: Перед деплоем модулей
- L2: Перед ALTER TABLE, миграцией БД
- L3: После установки чистой CMS (vanilla) ← КРИТИЧНО
- L4: Перед рефакторингом архитектуры
Команды:
# L1: Модули
tar -czf "arh/modules-$(date +%Y%m%d-%H%M%S).tar.gz" modules/
# L2: БД
mysqldump -u user -p db_name | gzip > "arh/sql/db-$(date +%Y%m%d-%H%M%S).sql.gz"
# L3: Vanilla (после установки CMS)
cd ~/
tar -czf "backups/vanilla/vanilla-$(date +%Y%m%d-%H%M%S).tar.gz" site.ru/
mysqldump -u user -p db_name | gzip > "backups/vanilla/vanilla-db-$(date +%Y%m%d-%H%M%S).sql.gz"
# L4: Полный backup
tar -czf "$INFRA/backups/full-$(date +%Y%m%d-%H%M%S).tar.gz" site.ru/
Хранение:
~/ ← Рабочий проект
├── site.ru/ ← Код
├── arh/ ← L1-L2 (локальные backup)
│ ├── modules/
│ └── sql/
└── backups/ ← L3 (vanilla backup)
└── vanilla/
$INFRA/backups/ ← L4 (долгосрочные backup)
См. полный стандарт: BACKUP.md
ПРАВИЛО: Откатиться к рабочей версии → повторить. НЕ чинить на месте.
Что считается "ядром" (НЕ ТРОГАТЬ):
| Система | Ядро (НЕ ТРОГАТЬ) | Можно менять |
|---|---|---|
| Drupal | core/, vendor/ |
modules/custom/, themes/custom/ |
| Laravel | vendor/, bootstrap/ |
app/, routes/, config/ |
| WordPress | wp-includes/, wp-admin/ |
wp-content/plugins/, themes/ |
| Node.js | node_modules/ |
src/, lib/ |
Если сломалось:
❌ НЕПРАВИЛЬНО:
1. Пытаться чинить core файлы
2. Накручивать workarounds
3. Продолжать если не работает
✅ ПРАВИЛЬНО:
1. ОТКАТ к последнему backup
2. Проверка: "это работает?"
3. Повторить изменение ПО-ДРУГОМУ
Пример:
# Сломалось после установки модуля
# ❌ НЕ ДЕЛАТЬ: vim vendor/drupal/core/...
# ✅ ДЕЛАТЬ:
cd ~/
tar -xzf backups/vanilla/vanilla-20260213-030000.tar.gz
gunzip -c backups/vanilla/vanilla-db.sql.gz | mysql -u user -ppass db_name
# Проверка
curl -I http://site.ru/
# HTTP/1.1 200 OK ✓
# Попробовать по-другому
# (не тот модуль / другая версия / другой подход)
См. полный стандарт: ROLLBACK_POLICY.md
ПРАВИЛО: Сделал → проверил → записал → commit. Повторить.
Цикл:
1. СДЕЛАТЬ одно изменение
2. ПРОВЕРИТЬ что работает
3. ЗАПИСАТЬ в DEVLOG.md
4. GIT COMMIT
5. Следующее изменение
Пример:
# 1. СДЕЛАТЬ
drush en commerce -y
# 2. ПРОВЕРИТЬ
drush pml --status=enabled | grep commerce
# commerce: enabled ✓
curl -I http://site.ru/admin/commerce
# HTTP/1.1 200 OK ✓
# 3. ЗАПИСАТЬ
cat >> DEVLOG.md << 'EOF'
## [MODULE] 2026-02-13 14:30
Commerce enabled:
- Version: 2.35
✓ Модуль включён
✓ Админка доступна
EOF
# 4. GIT COMMIT
git add DEVLOG.md
git commit -m "Setup: module commerce enabled"
git tag v0.2.0
Почему это важно:
- Если сломалось на шаге N → откат к N-1
- Знаем ГДЕ именно поломка
- Не накапливаем проблемы
ПРАВИЛО: Каждое действие записывается в DEVLOG.md
Формат записи:
[YYYY-MM-DD HH:MM] ДЕЙСТВИЕ: описание
Параметр: значение
✓ Результат
→ Статус
Примеры:
[2026-02-13 03:00] INFRA CHECK: проверка окружения
PHP: 8.4
MySQL: 8.0
✓ Всё установлено
→ ГОТОВО к работе
[2026-02-13 03:15] VANILLA: настройка завершена
URL: http://new.site.ru/
Admin: http://new.site.ru/admin
✓ Сайт работает
→ VANILLA готова
[2026-02-13 03:30] MODULE: commerce enabled
Версия: 2.35
✓ Модуль включён
→ Работает
[2026-02-13 04:00] BACKUP: создан L3
Файл: ~/backups/vanilla/vanilla-20260213-040000.tar.gz
Размер: 45M
✓ Проверен
→ Backup готов
[2026-02-13 14:30] DEPLOY: modules to production
Модули: commerce, token, pathauto
✓ Деплой успешен
→ PRODUCTION обновлён
Типы действий:
- INFRA CHECK: проверка инфраструктуры
- ZERO: развёртывание системы
- VANILLA: создание голого дистрибутива
- SETUP: настройка и установка
- MODULE: работа с модулями
- BACKUP: создание backup
- FEATURE: новая функция
- FIX: исправление бага
- DEPLOY: деплой
- ROLLBACK: откат
ПРАВИЛО: Проверил что работает → commit. НЕ раньше.
Формат commit:
{Этап}: {действие}
Этапы:
- Zero: развёртывание системы
- Setup: настройка и установка
- Vanilla: создание эталона
- Feature: новая функция
- Fix: исправление бага
- Refactor: рефакторинг
- Deploy: деплой
- Rollback: откат
Примеры:
git commit -m "Zero: Drupal 11.3.3 deployed"
git commit -m "Setup: database created"
git commit -m "Setup: modules enabled (locale, commerce)"
git commit -m "Vanilla: backup created"
git commit -m "Feature: custom module created"
git commit -m "Fix: form validation error"
git commit -m "Deploy: modules deployed to production"
git commit -m "Rollback: reverted to v0.5.0"
Правило: Один commit = одно логическое изменение
После commit → tag версии:
git tag v0.1.0 # первая фича
git tag v0.2.0 # вторая фича
git tag v1.0.0 # релиз в prod
git push origin --tags
ПРАВИЛО: 3 ошибки подряд → СТОП → откат к backup → другой подход.
Когда откатываться:
- Тест падает 3 раза
- Код не работает после 3 попыток
- Сайт сломался
- Ошибки в логах
- Что-то непонятное происходит
Алгоритм отката:
# 1. СТОП работы
# 2. Найти последний рабочий backup
ls -lt ~/backups/vanilla/
# vanilla-20260213-030000.tar.gz ← этот работал
# 3. Откат файлов
cd ~/
rm -rf broken.site.ru
tar -xzf backups/vanilla/vanilla-20260213-030000.tar.gz
# 4. Откат БД
gunzip -c backups/vanilla/vanilla-db-20260213-030000.sql.gz | \
mysql -u user -ppass db_name
# 5. Проверка
curl -I http://site.ru/
# HTTP/1.1 200 OK ✓
# 6. Записать
cat >> DEVLOG.md << 'EOF'
## [ROLLBACK] 2026-02-13 15:00
Откат к vanilla:
- Причина: сломалась установка модулей
- Backup: vanilla-20260213-030000.tar.gz
✓ Откат выполнен
✓ Сайт работает
→ Попробовать другой подход
EOF
git add DEVLOG.md
git commit -m "Rollback: reverted to vanilla 20260213-030000"
НЕ ДЕЛАТЬ:
- ❌ Пытаться чинить 10 раз подряд
- ❌ Менять ядро системы
- ❌ Накручивать костыли
ДЕЛАТЬ:
- ✅ Откатиться к рабочей версии
- ✅ Понять в чём проблема
- ✅ Попробовать ДРУГОЙ подход
ПРАВИЛО: Меняешь файл/БД на сервере → READ-MODIFY-WRITE. НИКОГДА слепая перезапись.
Проблема:
# ❌ ОПАСНО (слепая перезапись)
echo "new_setting=1" > /etc/config.conf
# ← СТИРАЕТ ВСЁ остальное!
# ❌ ОПАСНО (UPDATE без WHERE)
UPDATE products SET price=0;
# ← ОБНУЛЯЕТ ВСЕ цены!
Решение: Паттерн READ → BACKUP → MODIFY → VERIFY
1. READ BEFORE WRITE (прочитать перед записью)
Непонятно что там → СНАЧАЛА ПРОЧИТАТЬ
# ❌ НЕПРАВИЛЬНО
echo "server_name site.ru;" >> /etc/nginx/site.conf
# ✅ ПРАВИЛЬНО
cat /etc/nginx/site.conf # сначала смотрим
# Понимаем структуру
# ПОТОМ вносим изменение
sed -i 's/old_value/new_value/' /etc/nginx/site.conf
-- ❌ НЕПРАВИЛЬНО
UPDATE products SET category_id=5 WHERE sku='ABC123';
-- ✅ ПРАВИЛЬНО
SELECT * FROM products WHERE sku='ABC123'; -- сначала смотрим
-- Видим текущее состояние
-- ПОТОМ обновляем
UPDATE products SET category_id=5 WHERE sku='ABC123';
2. BACKUP BEFORE CHANGE (бэкап перед изменением)
Любое изменение → СНАЧАЛА БЭКАП
# Файлы: всегда с timestamp
cp /path/to/file /path/to/file.bak-$(date +%Y%m%d-%H%M%S)
-- БД: backup строк
CREATE TABLE products_backup_20260213_143500
AS SELECT * FROM products WHERE condition;
3. SPECIFIC NOT GLOBAL (конкретное, не глобальное)
Изменяй КОНКРЕТНОЕ, НЕ ВСЁ
# ❌ ГЛОБАЛЬНО (опасно)
echo "new" > file.txt # перезаписывает ВСЁ
# ✅ КОНКРЕТНО (безопасно)
sed -i 's/^old_line$/new_line/' file.txt # меняет ОДНУ строку
-- ❌ ГЛОБАЛЬНО (опасно)
UPDATE users SET active=0; -- меняет ВСЕ записи
-- ✅ КОНКРЕТНО (безопасно)
UPDATE users SET active=0 WHERE last_login < '2024-01-01';
4. VERIFY AFTER CHANGE (проверить после изменения)
Изменил → ПРОВЕРЬ результат
# 1. Изменение
sed -i 's/listen 80/listen 8080/' nginx.conf
# 2. Проверка содержимого
grep "listen" nginx.conf
# listen 8080; ✓
# 3. Проверка синтаксиса
nginx -t
# syntax is ok ✓
# 4. Проверка работы
systemctl reload nginx
curl -I http://localhost:8080
# HTTP/1.1 200 OK ✓
-- 1. Изменение
UPDATE products SET price=price*1.1 WHERE category_id=5;
-- Query OK, 42 rows affected
-- 2. Проверка результата
SELECT COUNT(*), AVG(price), MIN(price), MAX(price)
FROM products WHERE category_id=5;
-- Проверить разумность цен ✓
-- 3. Проверка конкретной записи
SELECT * FROM products WHERE category_id=5 LIMIT 5;
5. ATOMIC OPERATIONS (атомарность)
Операция = атомарная (всё или ничего)
-- Транзакции
START TRANSACTION;
UPDATE accounts SET balance=balance-100 WHERE id=1;
UPDATE accounts SET balance=balance+100 WHERE id=2;
-- Проверить
SELECT balance FROM accounts WHERE id IN (1,2);
-- Если OK → зафиксировать
COMMIT;
-- Если НЕ OK → откатить
-- ROLLBACK;
# Файлы: write to temp → rename (атомарная замена)
cat > /tmp/config.new << 'EOF'
new_content
EOF
# Проверить
cat /tmp/config.new
# Атомарная замена (одна операция)
mv /tmp/config.new /etc/config.conf
6. ROLLBACK PLAN READY (план отката готов)
Перед изменением → ЗНАТЬ как откатить
ПЕРЕД ИЗМЕНЕНИЕМ:
□ Есть backup?
□ Знаю команду rollback?
□ Проверил backup (можно восстановить)?
□ Записал что изменяю (в DEVLOG)?
ЕСЛИ ВСЁ ✓ → делать изменение
ЕСЛИ ЧТО-ТО ✗ → СТОП, сначала подготовить
┌─────────────────────────────────────────────┐
│ ЛЮБОЕ ИЗМЕНЕНИЕ НА УДАЛЁННОМ СЕРВЕРЕ/БД │
└─────────────────────────────────────────────┘
↓
┌──────────────────────┐
│ 1. READ (прочитать) │
│ - Что там сейчас? │
│ - Понятна структура? │
└──────────────────────┘
↓
┌──────────────────────┐
│ 2. BACKUP (сохранить)│
│ - Файл: .bak-DATE │
│ - БД: backup таблица │
└──────────────────────┘
↓
┌──────────────────────┐
│ 3. MODIFY (изменить) │
│ - Конкретное место │
│ - НЕ всё подряд │
└──────────────────────┘
↓
┌──────────────────────┐
│ 4. VERIFY (проверить)│
│ - Прочитать результат│
│ - Тест (syntax/logic)│
└──────────────────────┘
↓
┌─────────┐
│ OK? │
└─────────┘
/ \
ДА / \ НЕТ
↓ ↓
┌──────────────┐ ┌──────────────┐
│ 5. COMMIT │ │ ROLLBACK │
│ - Применить │ │ - Откатить │
│ - Записать │ │ - Из backup │
└──────────────┘ └──────────────┘
Пример 1: Изменение nginx конфига
# 1. READ
ssh server "cat /etc/nginx/sites-available/site.conf" > site.conf.current
cat site.conf.current # изучаем
# 2. BACKUP на сервере
ssh server "cp /etc/nginx/sites-available/site.conf \
/etc/nginx/sites-available/site.conf.bak-$(date +%Y%m%d-%H%M%S)"
# 3. MODIFY (локально)
cp site.conf.current site.conf.new
vim site.conf.new # редактируем
# 4. VERIFY (локально)
docker run --rm -v $(pwd):/etc/nginx nginx nginx -t -c /etc/nginx/site.conf.new
# syntax is ok ✓
# 5. UPLOAD
scp site.conf.new server:/tmp/site.conf.new
# 6. ATOMIC REPLACE
ssh server "sudo mv /tmp/site.conf.new /etc/nginx/sites-available/site.conf"
# 7. VERIFY на сервере
ssh server "nginx -t"
# syntax is ok ✓
# 8. COMMIT
ssh server "systemctl reload nginx"
# 9. CHECK
curl -I https://site.ru
# HTTP/1.1 200 OK ✓
# ROLLBACK (если что-то не так):
# ssh server "cp /etc/nginx/sites-available/site.conf.bak-DATE \
# /etc/nginx/sites-available/site.conf && \
# systemctl reload nginx"
Пример 2: UPDATE в БД
-- 1. READ (сколько затронем?)
SELECT COUNT(*) FROM products WHERE sku LIKE 'ABC%';
-- 5000 rows! ← СТОП, это много!
-- Уточняем
SELECT COUNT(*) FROM products WHERE sku='ABC-123';
-- 1 row ✓
-- 2. BACKUP
CREATE TABLE products_backup_20260213_143500
AS SELECT * FROM products WHERE sku='ABC-123';
-- 3. MODIFY
UPDATE products
SET price=999.99
WHERE sku='ABC-123';
-- Query OK, 1 row affected ✓
-- 4. VERIFY
SELECT sku, price FROM products WHERE sku='ABC-123';
-- sku='ABC-123', price=999.99 ✓
-- ROLLBACK (если ошибка):
-- UPDATE products p
-- SET price=(SELECT price FROM products_backup_20260213_143500 b
-- WHERE b.id=p.id)
-- WHERE sku='ABC-123';
Зависит от режима работы:
ПОЛНЫЙ ЦИКЛ (DEV → STAGING → PRODUCTION):
1. DEV: разработка + тесты
├─ git commit -m "Feature: X"
└─ git tag v0.5.0
2. STAGING: деплой + тесты на копии prod
├─ rsync/git pull на STAGING
├─ Тесты на STAGING
└─ Если OK → шаг 3
Если НЕ OK → фикс на DEV → шаг 1
3. PRODUCTION: деплой
├─ BACKUP prod (L1+L2)
├─ rsync/git pull на PRODUCTION
├─ Проверка работоспособности
└─ Если OK → релиз
Если НЕ OK → ROLLBACK
БЫСТРЫЙ ЦИКЛ (DEV → PRODUCTION):
1. DEV: разработка + ВСЕ тесты
├─ git commit -m "Feature: X"
├─ git tag v0.5.0
└─ Все тесты пройдены ✓
2. PRODUCTION: деплой
├─ BACKUP prod (L1+L2)
├─ rsync/git pull на PRODUCTION
├─ Проверка работоспособности
└─ Если OK → релиз
Если НЕ OK → ROLLBACK
Checklist перед деплоем:
ПЕРЕД ДЕПЛОЕМ (обязательно):
□ Backup создан (L1+L2)
□ Тесты пройдены (на DEV/STAGING)
□ Git tag поставлен (v0.x.x)
□ DEVLOG заполнен
□ План rollback готов
ЕСЛИ ВСЁ ✓ → deploy
ЕСЛИ ЧТО-ТО ✗ → СТОП
Команды backup:
# L1: Модули
tar -czf "arh/modules-before-deploy-$(date +%Y%m%d-%H%M%S).tar.gz" \
modules/custom/
# L2: БД
mysqldump -u user -ppass db_name | \
gzip > "arh/sql/db-before-deploy-$(date +%Y%m%d-%H%M%S).sql.gz"
Если деплой сломал прод:
# 1. СТОП деплоя
# 2. Найти backup ПЕРЕД деплоем
ls -lt arh/modules/
# modules-before-deploy-20260213-143022.tar.gz
ls -lt arh/sql/
# db-before-deploy-20260213-143505.sql.gz
# 3. Откат файлов
tar -xzf arh/modules/modules-before-deploy-20260213-143022.tar.gz \
-C modules/
# 4. Откат БД
gunzip -c arh/sql/db-before-deploy-20260213-143505.sql.gz | \
mysql -u user -ppass db_name
# 5. Проверка
curl -I http://site.ru/
# HTTP/1.1 200 OK ✓
# 6. Записать
cat >> DEVLOG.md << 'EOF'
## [ROLLBACK] 2026-02-13 14:50
Deploy откачен:
- Причина: ошибка после деплоя модулей
- Backup: modules-before-deploy-20260213-143022.tar.gz
- DB backup: db-before-deploy-20260213-143505.sql.gz
✓ Откат выполнен
✓ Сайт работает
→ Исправить проблему на DEV
EOF
git add DEVLOG.md
git commit -m "Rollback: deploy reverted to 20260213-143022"
После rollback:
1. Исправить проблему на DEV
2. Протестировать снова
3. Повторить deploy
| Документ | Назначение |
|---|---|
| IT_PROJECTS.md | Основы (мастер-индекс) |
| PROJECT_INIT.md | Инициализация (PATH A/B) |
| PROJECT_DEV.md | Разработка (workflow) |
| ROLLBACK_POLICY.md | Политика отката |
| BACKUP.md | Политика бэкапов |
| DEPLOYMENT.md | Процесс деплоя |
| SECURITY_CREDENTIALS.md | Безопасность |
Версия: 2.0.0
История:
- v1.x: PART 0 (sections 0.5-0.12) в PROJECT_WORKFLOW.md
- v2.0.0: Выделено в отдельный документ