d568bf84eb
Канон рецепта server-side деплоя, который раньше жил только в /var/www/liderra/redeploy.sh. - deploy/redeploy.sh — копия 1:1 текущей версии с боевого (квирк 107 фикс встроен: sudo -u www-data php artisan optimize). - deploy/README.md — workflow деплоя (git archive + scp + bash redeploy.sh) и пояснение, что боевой остаётся source of truth для исполнения, репо — source of truth для рецепта. При следующей правке скрипта на боевом — синкать обратно (sha-сверка). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
34 lines
1.9 KiB
Markdown
34 lines
1.9 KiB
Markdown
# deploy/
|
||
|
||
Скрипты применения обновлений на боевом сервере liderra.ru.
|
||
|
||
## redeploy.sh
|
||
|
||
Server-side половина деплоя. На боевом лежит в `/var/www/liderra/redeploy.sh`
|
||
(вне репозитория Laravel). Здесь — каноническая копия для версионирования
|
||
и аудита.
|
||
|
||
**Workflow деплоя:**
|
||
|
||
1. **Локально** — собрать архив кода + Vite-сборку:
|
||
```bash
|
||
git archive HEAD app/ db/ | gzip > /tmp/deploy-code.tgz
|
||
tar czf /tmp/deploy-build.tgz -C app/public build/
|
||
```
|
||
2. **scp** обоих архивов на сервер.
|
||
3. **На сервере** — распаковать в `/var/www/liderra/app/`, выставить владельца
|
||
`www-data:www-data`, запустить `bash /var/www/liderra/redeploy.sh`.
|
||
|
||
**NB:** `redeploy.sh` НЕ делает `git pull` — он рассчитан на то, что код
|
||
уже залит scp. Если запустить без предварительного scp — будет no-op
|
||
(composer install / migrate / optimize / restart на той же кодовой базе).
|
||
|
||
**Квирк 107 (фикс встроен):** строка `sudo -u www-data php artisan optimize`
|
||
обязательна. Без неё `optimize` запускался от `ubuntu` → `bootstrap/cache/config.php`
|
||
с владельцем `ubuntu` → php-fpm (под `www-data`) не мог прочитать → 503 на всём
|
||
портале. Инцидент 24.05.2026 03:46 UTC, портал лежал 18 минут.
|
||
|
||
**Расхождение с боевым:** если правится этот файл — синкать на боевой
|
||
(scp + проверка хеша). Боевой = source of truth для исполнения, репо =
|
||
source of truth для рецепта.
|