109 lines
2.5 KiB
Bash
109 lines
2.5 KiB
Bash
#!/bin/bash
|
|
|
|
# SDI SaaS Platform - Deployment Script for Dev Server
|
|
# Server: 102.69.243.165
|
|
# User: root
|
|
|
|
set -e
|
|
|
|
echo "🚀 SDI SaaS Platform - Dev Server Deployment"
|
|
echo "=============================================="
|
|
|
|
# Configuration
|
|
SERVER_IP="102.69.243.165"
|
|
SERVER_USER="root"
|
|
DEPLOY_PATH="/var/www/sdi-saas"
|
|
APP_NAME="sdi-saas"
|
|
|
|
echo "📦 Step 1: Preparing deployment package..."
|
|
|
|
# Create deployment archive (excluding node_modules and .git)
|
|
tar -czf sdi-deploy.tar.gz \
|
|
--exclude='node_modules' \
|
|
--exclude='.git' \
|
|
--exclude='dist' \
|
|
--exclude='*.log' \
|
|
--exclude='.env' \
|
|
.
|
|
|
|
echo "✅ Deployment package created"
|
|
|
|
echo "📤 Step 2: Uploading to server..."
|
|
|
|
# Upload to server
|
|
scp sdi-deploy.tar.gz ${SERVER_USER}@${SERVER_IP}:/tmp/
|
|
|
|
echo "✅ Files uploaded"
|
|
|
|
echo "🔧 Step 3: Deploying on server..."
|
|
|
|
# SSH into server and deploy
|
|
ssh ${SERVER_USER}@${SERVER_IP} << 'ENDSSH'
|
|
set -e
|
|
|
|
echo "Creating deployment directory..."
|
|
mkdir -p /var/www/sdi-saas
|
|
cd /var/www/sdi-saas
|
|
|
|
echo "Extracting files..."
|
|
tar -xzf /tmp/sdi-deploy.tar.gz -C /var/www/sdi-saas
|
|
|
|
echo "Installing dependencies..."
|
|
# Install Node.js 20 if not present
|
|
if ! command -v node &> /dev/null; then
|
|
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
|
|
apt-get install -y nodejs
|
|
fi
|
|
|
|
# Install pnpm if not present
|
|
if ! command -v pnpm &> /dev/null; then
|
|
npm install -g pnpm@8.15.0
|
|
fi
|
|
|
|
# Install dependencies
|
|
pnpm install --frozen-lockfile
|
|
|
|
echo "Setting up environment..."
|
|
# Copy environment files
|
|
cp apps/api/.env.example apps/api/.env
|
|
cp apps/worker/.env.example apps/worker/.env
|
|
cp packages/database/.env.example packages/database/.env
|
|
|
|
# Update DATABASE_URL for production
|
|
sed -i 's/localhost/postgres/g' apps/api/.env
|
|
sed -i 's/localhost/postgres/g' apps/worker/.env
|
|
sed -i 's/localhost/postgres/g' packages/database/.env
|
|
|
|
echo "Generating Prisma client..."
|
|
cd packages/database
|
|
pnpm db:generate
|
|
|
|
echo "Starting services with Docker Compose..."
|
|
cd /var/www/sdi-saas
|
|
docker-compose up -d
|
|
|
|
echo "Waiting for database to be ready..."
|
|
sleep 10
|
|
|
|
echo "Running database migrations..."
|
|
cd packages/database
|
|
pnpm db:migrate
|
|
|
|
echo "Seeding database..."
|
|
pnpm db:seed
|
|
|
|
echo "✅ Deployment complete!"
|
|
echo "API: http://102.69.243.165:3000"
|
|
echo "API Docs: http://102.69.243.165:3000/api/docs"
|
|
|
|
ENDSSH
|
|
|
|
echo "🎉 Deployment successful!"
|
|
echo ""
|
|
echo "Access your application:"
|
|
echo " API: http://102.69.243.165:3000"
|
|
echo " API Docs: http://102.69.243.165:3000/api/docs"
|
|
echo ""
|
|
echo "To check logs:"
|
|
echo " ssh root@102.69.243.165 'cd /var/www/sdi-saas && docker-compose logs -f'"
|