c370ff8248
Accessibility (Pa11y live) / a11y (push) Waiting to run
Проверено на боевом 25.06: config.php = ubuntu:www-data mode 775, www-data ЧИТАЕТ его через группу, портал HTTP 200 — реального дефекта НЕТ. Квирк «лечили» несколько раз, гонясь за строгой проверкой «владелец == www-data», тогда как важна читаемость. Две первопричины повтора закрыты: 1. deploy/redeploy.sh: optimize перенесён в КОНЕЦ (после chown -R ubuntu:www-data bootstrap/cache). Раньше optimize шёл ДО chown'а → chown переписывал владельца свежего config.php обратно на ubuntu. Теперь кэши пишутся после chown и остаются www-data:www-data. 2. .claude/agents/prod-deploy-validator.md П1: критерий сменён на ЧИТАЕМОСТЬ www-data (sudo -u www-data test -r config.php) вместо строгого владельца. Владелец ubuntu при группе www-data+775 больше НЕ даёт ложный NO-GO. Свежесть (mtime ≥ .env, квирк 104) сохранена. Описание квирка 107 и формат рапорта обновлены. Прод не трогали — он здоров. После следующего redeploy config.php станет www-data-owned. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
28 lines
2.2 KiB
Bash
28 lines
2.2 KiB
Bash
#!/usr/bin/env bash
|
||
# Лидерра тест-сервер — применить обновление (server-side половина).
|
||
# ПЕРЕД запуском: с dev-машины залить новый код (git archive app db) + сборку
|
||
# (app/public/build) через scp. Затем на сервере: bash /var/www/liderra/redeploy.sh
|
||
set -euo pipefail
|
||
cd /var/www/liderra/app
|
||
# vendor/ принадлежит www-data, а скрипт бежит от ubuntu → composer install от
|
||
# ubuntu падает "autoload_classmap.php: Permission denied" и (из-за set -e) рвёт
|
||
# деплой ДО кэшей/рестарта → прод 500. Инцидент 23.06.2026. Поэтому composer
|
||
# запускаем от root (COMPOSER_ALLOW_SUPERUSER) и возвращаем владельца vendor www-data.
|
||
sudo env COMPOSER_ALLOW_SUPERUSER=1 composer install --optimize-autoloader --no-interaction --no-scripts --ignore-platform-req=ext-redis
|
||
sudo chown -R www-data:www-data vendor
|
||
# NB: миграции crm_migrator-owned таблиц (напр. saas_transactions) штатной .env-ролью
|
||
# НЕ применяются ("must be owner") — применять ВРУЧНУЮ под `sudo -u postgres` ДО запуска
|
||
# скрипта + INSERT в migrations, тогда строка ниже = no-op. Иначе set -e порвёт деплой.
|
||
php artisan migrate --force
|
||
sudo chmod -R a+rX public/build
|
||
sudo chown -R ubuntu:www-data storage bootstrap/cache
|
||
sudo chmod -R 775 storage bootstrap/cache
|
||
# optimize ПОСЛЕДНИМ под www-data: до 25.06 он стоял ДО chown'а выше, и chown -R
|
||
# на bootstrap/cache переписывал владельца свежесозданного config.php обратно на
|
||
# ubuntu (квирк 107 «лечили» зря несколько раз). Теперь optimize пишет кэши
|
||
# (config/route/event/view) ПОСЛЕ chown — они остаются www-data:www-data.
|
||
# (Портал работал и так — www-data читал config.php через группу+775 — но так чище.)
|
||
sudo -u www-data php artisan optimize
|
||
sudo systemctl restart php8.3-fpm liderra-queue
|
||
echo "Redeploy done at $(date -u +%FT%TZ)"
|