Co-authored-by: Cursor <cursoragent@cursor.com>
4.9 KiB
Решение проблем
Диагностика одной командой
bash /opt/shop/shop10/scripts/diagnose-502.sh
(замените путь на каталог вашего клона — где есть package.json)
Ошибки при «быстром развёртывании»
| Ошибка | Причина | Решение |
|---|---|---|
Unable to locate package postgresql-17 |
В Ubuntu нет PG 17 без PGDG | sudo bash /opt/shop/shop10/scripts/install-postgresql-ubuntu.sh |
URL_РЕПОЗИТОРИЯ: No such file |
Скопирован placeholder из README | Используйте реальный URL: git clone https://git.evilfox.cc/test/shop10.git /opt/shop/shop10 |
package.json в /opt/shop |
Неверный каталог | Репозиторий в /opt/shop/shop10 |
| Изменения не применились | git pull не в том каталоге |
bash /opt/shop/shop10/scripts/server-update.sh |
Полное развёртывание / обновление:
cd /opt/shop/shop10 && git pull
sudo bash scripts/quick-deploy-ubuntu.sh
Только обновление кода (сайт уже работает):
bash /opt/shop/shop10/scripts/server-update.sh
git: You are not currently on a branch / not a git repository
Клон на теге (detached HEAD) или обновление из /opt/shop вместо /opt/shop/shop10:
cd /opt/shop/shop10
git status
bash scripts/git-sync.sh
bash scripts/server-update.sh
Если fatal: not a git repository в /opt/shop/shop10:
ls -la /opt/shop/shop10/.git
# нет .git — заново:
mv /opt/shop/shop10 /opt/shop/shop10.bak.$(date +%s)
git clone https://git.evilfox.cc/test/shop10.git /opt/shop/shop10
cp /opt/shop/shop10.bak.*/.env /opt/shop/shop10/.env 2>/dev/null || cp /opt/shop/shop10/.env.example /opt/shop/shop10/.env
bash /opt/shop/shop10/scripts/server-update.sh
Job for shop.service failed (control process exited)
Чаще всего не запущен PostgreSQL или не прошёл ExecStartPre:
cd /opt/shop/shop10
git pull
sudo bash scripts/install-postgresql-ubuntu.sh
bash scripts/setup-postgres-ubuntu.sh
sudo bash scripts/install-shop-service.sh
Диагностика:
bash /opt/shop/shop10/scripts/diagnose-shop-service.sh
journalctl -u shop -n 50 --no-pager
Скопировать старый .env:
cp /opt/shop/.env /opt/shop/shop10/.env
sudo bash /opt/shop/shop10/scripts/install-shop-service.sh
Служба shop не установлена
Код обновился, но systemd unit не настроен:
cd /opt/shop/shop10
sudo bash scripts/install-shop-service.sh
Проверка:
systemctl status shop
curl -s http://127.0.0.1:3000/health
scripts/server-update.sh: No such file or directory
Вы не в каталоге репозитория или клон в подпапке (например /opt/shop/shop10):
ls /opt/shop/shop10/package.json
bash /opt/shop/shop10/scripts/server-update.sh
В deploy/shop.service укажите тот же путь в WorkingDirectory и EnvironmentFile.
HTTP 502 (Caddy / браузер)
SSL работает, страница 502 — Caddy жив, backend (Node) не отвечает.
curl -s http://127.0.0.1:3000/health
systemctl status shop
journalctl -u shop -n 30 --no-pager
Пока /health не OK — Caddy будет отдавать 502.
ECONNREFUSED 127.0.0.1:5432
PostgreSQL не запущен или не установлен.
bash /opt/shop/shop10/scripts/fix-db-connection.sh
Или вручную:
systemctl start postgresql
pg_isready -h 127.0.0.1 -p 5432
bash scripts/setup-postgres-ubuntu.sh
Проверьте DATABASE_URL в /opt/shop/shop10/.env.
Служба shop сразу останавливается
В логе только «База уже содержит товары» без строки Магазин: http://...:
bash /opt/shop/shop10/scripts/server-update.sh
systemctl restart shop
dubious ownership (git pull)
Не делайте chown -R www-data /opt/shop.
chown -R root:root /opt/shop
git config --global --add safe.directory /opt/shop
git pull
Docker: контейнер app unhealthy
docker compose logs app
docker compose logs postgres
docker compose up -d --build
Docker: нет связи с БД
Проверьте, что DATABASE_URL в compose указывает на хост postgres, а не 127.0.0.1 (внутри контейнера app).