chitfund/backend/deploy.sh

66 lines
1.6 KiB
Bash

#!/bin/bash
# LuckyChit Backend Deployment Script
# Usage: ./deploy.sh [production|development]
ENV=${1:-production}
APP_NAME="luckychit-backend"
echo "🚀 Deploying LuckyChit Backend - Environment: $ENV"
echo "================================================"
# Check if PM2 is installed
if ! command -v pm2 &> /dev/null; then
echo "❌ PM2 is not installed. Installing..."
npm install -g pm2
fi
# Clean install dependencies (fixes native module issues like bcrypt)
echo "📦 Installing dependencies..."
echo " Cleaning old modules to rebuild native bindings..."
rm -rf node_modules package-lock.json
npm install --production
# Create logs directory if it doesn't exist
if [ ! -d "logs" ]; then
echo "📁 Creating logs directory..."
mkdir -p logs
fi
# Check if .env file exists
if [ ! -f ".env" ]; then
echo "⚠️ Warning: .env file not found!"
echo "Please create .env file with production credentials"
echo "Example: cp .env.example .env"
exit 1
fi
# Stop existing PM2 process if running
if pm2 describe $APP_NAME > /dev/null 2>&1; then
echo "🛑 Stopping existing process..."
pm2 delete $APP_NAME
fi
# Start application with PM2
echo "🎯 Starting application with PM2..."
if [ "$ENV" == "production" ]; then
pm2 start ecosystem.config.js --env production
else
pm2 start ecosystem.config.js --env development
fi
# Save PM2 process list
echo "💾 Saving PM2 process list..."
pm2 save
# Show status
echo ""
echo "✅ Deployment complete!"
echo ""
pm2 list
echo ""
echo "📊 Monitor with: pm2 monit"
echo "📝 View logs with: pm2 logs $APP_NAME"
echo ""