mnemo_cards/tools/deploy/backend/deploy_remote.sh
2025-11-23 00:14:18 +03:00

109 lines
3.7 KiB
Bash
Executable file

#!/bin/bash
# Script to trigger backend deployment on the remote server
# Usage: ./deploy_remote.sh
set -e
# Configuration
SERVER_IP="147.45.152.129"
SERVER_USER="root"
REMOTE_DIR="~/mnemo_cards_backend"
BUILD_SCRIPT="./build_app.sh"
# Colors
GREEN='\033[0;32m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
echo -e "${BLUE}[INFO]${NC} Starting backend deployment on ${SERVER_USER}@${SERVER_IP}..."
# Sync source code
echo -e "${BLUE}[INFO]${NC} Syncing source code to ${SERVER_USER}@${SERVER_IP}..."
# Sync common packages first
rsync -avz --delete --exclude '.*' --exclude 'build' --exclude 'doc' \
mnemo_cards_common \
mnemo_cards_common_backend \
"${SERVER_USER}@${SERVER_IP}:~/"
# Sync backend project
rsync -avz --delete --exclude '.*' --exclude 'build' --exclude 'server.exe' \
mnemo_cards_backend \
"${SERVER_USER}@${SERVER_IP}:~/"
echo -e "${BLUE}[INFO]${NC} Triggering remote build..."
# Execute build directly via SSH
ssh -t "${SERVER_USER}@${SERVER_IP}" << 'ENDSSH'
set -e -v
cd ~/mnemo_cards_backend
# Get dependencies and compile
echo "📦 Getting dependencies..."
dart pub get
echo "🔨 Compiling server..."
dart compile exe --verbose lib/main.dart -o server_build.exe
# Stop service
echo "🛑 Stopping service..."
sudo systemctl stop mnemo_cards_server || true
# Update service file
echo "⚙️ Updating service configuration..."
sudo chmod 777 mnemo_cards_server.service
sudo cp mnemo_cards_server.service /etc/systemd/system/
# Update executable
echo "🔄 Replacing executable..."
sudo cp server_build.exe server.exe
rm server_build.exe
# Check certificates and configure mode
if [ -d "/etc/letsencrypt/live/api.mnemo-cards.online" ]; then
echo "✅ Let's Encrypt certificates found. Configuring dual mode..."
sudo sed -i 's|ExecStart=/root/mnemo_cards_backend/server.exe.*|ExecStart=/root/mnemo_cards_backend/server.exe --dual --certs /etc/letsencrypt/live/api.mnemo-cards.online -a 0.0.0.0 -p 8081|' /etc/systemd/system/mnemo_cards_server.service
else
echo "⚠️ No certificates found. Configuring HTTP mode..."
sudo sed -i 's|ExecStart=/root/mnemo_cards_backend/server.exe.*|ExecStart=/root/mnemo_cards_backend/server.exe -a 0.0.0.0 -p 8081|' /etc/systemd/system/mnemo_cards_server.service
fi
# Reload and restart
echo "🚀 Restarting service..."
sudo systemctl daemon-reload
sudo systemctl start mnemo_cards_server
# Check status
sleep 2
systemctl status mnemo_cards_server --no-pager
# Гарантируем, что nginx запущен (важно для работы code.mnemo-cards.online)
echo "🔍 Проверяем статус nginx..."
if sudo systemctl is-active --quiet nginx; then
echo "✅ nginx уже запущен"
# Перезагружаем конфигурацию на всякий случай
if sudo nginx -t 2>/dev/null; then
sudo systemctl reload nginx
echo "✅ Конфигурация nginx перезагружена"
fi
else
echo "⚠️ nginx не запущен, запускаем..."
if sudo nginx -t 2>/dev/null; then
sudo systemctl start nginx
sleep 2
if sudo systemctl is-active --quiet nginx; then
echo "✅ nginx успешно запущен"
else
echo "❌ Ошибка: не удалось запустить nginx!"
sudo systemctl status nginx --no-pager || true
fi
else
echo "❌ Ошибка в конфигурации nginx!"
sudo nginx -t || true
fi
fi
ENDSSH
echo -e "${GREEN}[SUCCESS]${NC} Backend deployment triggered successfully!"