#!/bin/bash # Обновление на сервере: git pull, npm, restart shop # bash "$SHOP_ROOT/scripts/server-update.sh" set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # shellcheck source=shop-root.sh source "$SCRIPT_DIR/shop-root.sh" echo "=== Shop update: $SHOP_ROOT ===" if [ ! -d .git ]; then echo "Ошибка: $SHOP_ROOT не git-репозиторий (нет .git)." echo "Если нет .git — клонируйте заново:" echo " export SHOP_GIT_URL=''" echo " mv \"$SHOP_ROOT\" \"\${SHOP_ROOT}.bak\"" echo " git clone \"\$SHOP_GIT_URL\" \"$SHOP_ROOT\"" exit 1 fi bash "$SCRIPT_DIR/git-sync.sh" npm install --omit=dev if [ -f .env ] && ! grep -q '^DATABASE_URL=' .env; then echo "ВНИМАНИЕ: добавьте DATABASE_URL в .env (см. .env.example)" exit 1 fi if command -v pg_isready >/dev/null; then pg_isready -h 127.0.0.1 -p 5432 >/dev/null || { echo "PostgreSQL не отвечает. Запустите: systemctl start postgresql" exit 1 } fi if [ -f /etc/systemd/system/shop.service ]; then systemctl daemon-reload bash "$SCRIPT_DIR/free-port-3000.sh" 3000 2>/dev/null || true systemctl restart shop sleep 2 if curl -sf http://127.0.0.1:3000/health; then echo "" echo "OK" systemctl reload caddy 2>/dev/null || true else echo "shop не отвечает — journalctl -u shop -n 30" exit 1 fi elif [ "$(id -u)" -eq 0 ]; then echo "Служба shop не установлена — устанавливаем..." bash "$SCRIPT_DIR/install-shop-service.sh" else echo "Служба shop не установлена. Выполните от root:" echo " sudo bash $SHOP_ROOT/scripts/install-shop-service.sh" echo "WorkingDirectory: $SHOP_ROOT" exit 1 fi