70 lines
1.8 KiB
Bash
Executable file
70 lines
1.8 KiB
Bash
Executable file
#!/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
|