Files
forkmessager/update-server.sh
Халимов Рустам b4b4b8e0d3 Original
2026-03-10 21:11:59 +03:00

113 lines
3.9 KiB
Bash

#!/bin/bash
# ══════════════════════════════════════════════
# VORTEX — Обновление на сервере
# ══════════════════════════════════════════════
set -e
APP_DIR="/var/www/vortex"
ARCHIVE="/root/vortex-deploy.tar.gz"
ENV_BACKUP="/root/vortex-env-backup"
GREEN='\033[0;32m'
RED='\033[0;31m'
CYAN='\033[0;36m'
NC='\033[0m'
print_step() { echo -e "\n${CYAN}━━━ $1 ━━━${NC}\n"; }
print_ok() { echo -e "${GREEN}$1${NC}"; }
print_err() { echo -e "${RED}$1${NC}"; }
echo ""
echo "══════════════════════════════════════════════"
echo " VORTEX — Обновление сервера"
echo "══════════════════════════════════════════════"
echo ""
# Проверка архива
if [ ! -f "$ARCHIVE" ]; then
print_err "Архив $ARCHIVE не найден!"
echo " Сначала запустите update-local.bat на вашем ПК"
exit 1
fi
# 1. Остановка сервера
print_step "1/7 — Остановка сервера"
pm2 stop vortex-server 2>/dev/null || true
print_ok "Сервер остановлен"
# 2. Бэкап .env
print_step "2/7 — Сохранение .env"
if [ -f "$APP_DIR/apps/server/.env" ]; then
cp "$APP_DIR/apps/server/.env" "$ENV_BACKUP"
print_ok ".env сохранён в $ENV_BACKUP"
else
print_err ".env не найден — пропускаем"
fi
# 3. Бэкап uploads
print_step "3/7 — Сохранение загруженных файлов"
if [ -d "$APP_DIR/apps/server/uploads/avatars" ]; then
cp -r "$APP_DIR/apps/server/uploads/avatars" /root/vortex-avatars-backup 2>/dev/null || true
print_ok "Аватарки сохранены"
fi
# 4. Распаковка
print_step "4/7 — Распаковка обновления"
tar -xzf "$ARCHIVE" -C "$APP_DIR"
print_ok "Файлы обновлены"
# Восстановление .env
if [ -f "$ENV_BACKUP" ]; then
cp "$ENV_BACKUP" "$APP_DIR/apps/server/.env"
print_ok ".env восстановлен"
fi
# Восстановление аватарок
if [ -d "/root/vortex-avatars-backup" ]; then
mkdir -p "$APP_DIR/apps/server/uploads/avatars"
cp -r /root/vortex-avatars-backup/* "$APP_DIR/apps/server/uploads/avatars/" 2>/dev/null || true
rm -rf /root/vortex-avatars-backup
print_ok "Аватарки восстановлены"
fi
# 5. Установка зависимостей
print_step "5/7 — Установка зависимостей"
cd "$APP_DIR"
npm install --production=false --legacy-peer-deps
print_ok "Зависимости установлены"
# 6. Сборка
print_step "6/7 — Сборка проекта"
cd "$APP_DIR/apps/server"
npx prisma generate
print_ok "Prisma Client сгенерирован"
npx prisma db push --accept-data-loss
print_ok "База данных синхронизирована"
npx tsc
print_ok "Сервер скомпилирован"
cd "$APP_DIR/apps/web"
npx vite build
print_ok "Фронтенд собран"
# 7. Запуск
print_step "7/7 — Запуск сервера"
pm2 restart vortex-server
pm2 save
print_ok "Сервер запущен"
# Очистка
rm -f "$ARCHIVE"
echo ""
echo "══════════════════════════════════════════════"
echo -e " ${GREEN}✓ ОБНОВЛЕНИЕ ЗАВЕРШЕНО!${NC}"
echo ""
echo " Проверьте: pm2 logs vortex-server --lines 10"
echo "══════════════════════════════════════════════"
echo ""