#!/bin/bash set -e # Exit on any error # Configuration DEPLOY_DIR="/opt/semblance" FRONTEND_DEST="/var/www/html/semblance" PYTHON_CMD="python3.13" echo "======================================" echo "Starting deployment..." echo "======================================" # Step 1: Pull latest changes echo "" echo "[1/6] Pulling latest changes from git..." cd "$DEPLOY_DIR" git pull # Step 2: Set up frontend environment echo "" echo "[2/6] Setting up frontend environment..." cp .env.production .env # Step 3: Set up Python virtual environment echo "" echo "[3/6] Setting up Python virtual environment..." cd "$DEPLOY_DIR/backend" if [ ! -d "venv" ]; then echo "Creating new virtual environment with $PYTHON_CMD..." $PYTHON_CMD -m venv venv else echo "Virtual environment already exists." fi # Step 4: Install Python dependencies echo "" echo "[4/6] Installing Python dependencies..." source venv/bin/activate pip install -r requirements.txt --quiet # Step 5: Build and deploy frontend echo "" echo "[5/6] Building and deploying frontend..." cd "$DEPLOY_DIR" npm install --silent npm run build echo "Cleaning deployment directory..." rm -rf "$FRONTEND_DEST"/* echo "Copying new build..." cp -r dist/* "$FRONTEND_DEST/" # Step 6: Create backend directories echo "" echo "[6/7] Creating backend directories..." mkdir -p "$DEPLOY_DIR/backend/uploads" mkdir -p "$DEPLOY_DIR/backend/temp" sudo chown -R www-data:www-data "$DEPLOY_DIR/backend/uploads" "$DEPLOY_DIR/backend/temp" # Step 7: Restart backend service echo "" echo "[7/7] Restarting backend service..." sudo systemctl restart semblance.service echo "" echo "======================================" echo "Deployment complete!" echo "======================================" echo "" systemctl status semblance.service --no-pager