# Решение проблем Полное руководство по развёртыванию: **[Сервер: установка и обновление](Server-Operations)**. **Обновление на сервере (рекомендуется):** ```bash export SHOP_ROOT=/opt/shop/shop10 bash "$SHOP_ROOT/scripts/server-update.sh" ``` `SHOP_ROOT` — каталог с `package.json` (у вас может быть `/opt/shop`). Перед диагностикой: ```bash export SHOP_ROOT=/opt/shop/shop10 cd "$SHOP_ROOT" ``` --- ## Диагностика ```bash bash "$SHOP_ROOT/scripts/diagnose-502.sh" bash "$SHOP_ROOT/scripts/diagnose-shop-service.sh" journalctl -u shop -n 50 --no-pager ``` --- ## Краткая таблица ошибок | Симптом | Что делать | |---------|------------| | `postgresql-17` not found | `sudo bash scripts/install-postgresql-ubuntu.sh` | | Placeholder / `URL_РЕПОЗИТОРИЯ` | `git clone <ваш-url> "$SHOP_ROOT"` — не копировать шаблоны как команды | | Нет `package.json` | `find /opt -name package.json`; `cd` в найденный каталог | | detached HEAD | `bash scripts/git-sync.sh` | | `EACCES` на `package-lock.json`, npm от www-data | `sudo bash scripts/fix-shop-permissions.sh` затем `sudo npm install --omit=dev` и снова `fix-shop-permissions` | | `shop.service` failed после обновления | `sudo bash scripts/fix-shop-permissions.sh` && `sudo systemctl restart shop` | | `status=203/EXEC` на `wait-postgres.sh` | `chmod +x scripts/*.sh`; `sed -i 's/\r$//' scripts/*.sh`; в unit: `ExecStartPre=+/bin/bash .../wait-postgres.sh`; `sudo bash scripts/install-shop-service.sh` | | Нет `scripts/...` | `bash "$SHOP_ROOT/scripts/server-update.sh"` | | Unit shop not found | `sudo bash scripts/install-shop-service.sh` | | shop exit-code / auto-restart | `sudo bash scripts/free-port-3000.sh`; `systemctl restart shop` | | 502 в браузере | `curl http://127.0.0.1:3000/health` — сначала backend | | ECONNREFUSED :5432 | `bash scripts/fix-db-connection.sh` | Подробности — в [Server-Operations](Server-Operations). --- ## HTTP 502 (Caddy / браузер) ```bash curl -s http://127.0.0.1:3000/health systemctl status shop ``` Пока `/health` не OK — Caddy будет отдавать 502. --- ## Docker ```bash docker compose logs app docker compose logs postgres docker compose up -d --build ``` `DATABASE_URL` в compose должен указывать на сервис `postgres`, не на `127.0.0.1` внутри контейнера app. --- ## git pull / dubious ownership Не делайте `chown -R www-data` на весь каталог репозитория. ```bash git config --global --add safe.directory "$SHOP_ROOT" cd "$SHOP_ROOT" && git pull ``` --- ## Ссылки - [Сервер: установка и обновление](Server-Operations) - [Установка Docker](Install-Docker) - [Установка без Docker](Install-Native)