Канон рецепта 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>
1.9 KiB
deploy/
Скрипты применения обновлений на боевом сервере liderra.ru.
redeploy.sh
Server-side половина деплоя. На боевом лежит в /var/www/liderra/redeploy.sh
(вне репозитория Laravel). Здесь — каноническая копия для версионирования
и аудита.
Workflow деплоя:
- Локально — собрать архив кода + Vite-сборку:
git archive HEAD app/ db/ | gzip > /tmp/deploy-code.tgz tar czf /tmp/deploy-build.tgz -C app/public build/ - scp обоих архивов на сервер.
- На сервере — распаковать в
/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 для рецепта.