66 lines
1.6 KiB
Bash
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 ""
|
|
|