![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/domains/lavocat.quebec/public_html/scripts/ |
#!/bin/bash
# Create Deployment Package Script for lavocat.quebec
# This script creates a zip file with all necessary deployment files
set -e # Exit on any error
echo "📦 Creating deployment package for lavocat.quebec..."
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Configuration
PACKAGE_NAME="lavocat-quebec-deployment-$(date +%Y%m%d-%H%M%S).zip"
TEMP_DIR="deployment-temp"
# Function to print colored output
print_status() {
echo -e "${BLUE}[INFO]${NC} $1"
}
print_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
print_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
print_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# Clean up any existing temp directory
if [ -d "$TEMP_DIR" ]; then
rm -rf "$TEMP_DIR"
fi
# Create temp directory
mkdir -p "$TEMP_DIR"
print_status "Creating deployment package..."
# Copy essential files
print_status "Copying project files..."
# Core application files
cp -r src/ "$TEMP_DIR/"
cp -r public/ "$TEMP_DIR/"
cp -r prisma/ "$TEMP_DIR/"
cp -r scripts/ "$TEMP_DIR/"
# Configuration files
cp package.json "$TEMP_DIR/"
cp package-lock.json "$TEMP_DIR/"
cp next.config.js "$TEMP_DIR/"
cp next.config.production.js "$TEMP_DIR/"
cp .env.production "$TEMP_DIR/"
cp server-production.js "$TEMP_DIR/"
# Documentation
cp DEPLOYMENT_CHECKLIST.md "$TEMP_DIR/"
cp README.md "$TEMP_DIR/" 2>/dev/null || echo "# Lavocat Quebec Deployment" > "$TEMP_DIR/README.md"
# Create deployment instructions
cat > "$TEMP_DIR/DEPLOYMENT_INSTRUCTIONS.md" <<EOF
# 🚀 Lavocat Quebec Deployment Instructions
## 📋 Pre-Deployment Checklist
### ✅ Server Requirements
- [ ] Node.js v20.19.4+ installed
- [ ] MySQL database created: gositeme_avocat
- [ ] DirectAdmin domain configured: lavocat.quebec
- [ ] SSL certificates configured via DirectAdmin
### ✅ Database Setup
Database already created:
- Hostname: localhost
- Database: gositeme_avocat
- Username: gositeme_avocat
- Password: TDZEMAwNvFznSKQeDkjY
## 🚀 Deployment Steps
### 1. Upload Files
Upload all files to: \`/home/gositeme/domains/lavocat.quebec/public_html/\`
### 2. SSH into Server
\`\`\`bash
ssh gositeme@your-server.com
cd /home/gositeme/domains/lavocat.quebec/public_html/
\`\`\`
### 3. Deploy Application
\`\`\`bash
# Make script executable
chmod +x scripts/deploy-directadmin.sh
# Deploy
npm run deploy:production
\`\`\`
### 4. Verify Deployment
\`\`\`bash
# Check if service is running
ps aux | grep server-production.js
# View logs
tail -f /home/gositeme/logs/lavocat-quebec/combined.log
\`\`\`
## 📋 Management Commands
### Application Management
\`\`\`bash
# Start application
./start-production.sh
# Stop application
./stop-production.sh
# Restart application
./restart-production.sh
# View logs
tail -f /home/gositeme/logs/lavocat-quebec/combined.log
\`\`\`
### Database Management
\`\`\`bash
# Backup database
npm run backup:database
# Backup with compression
npm run backup:database:compressed
# Connect to database
mysql -u gositeme_avocat -pTDZEMAwNvFznSKQeDkjY gositeme_avocat
\`\`\`
### Log Management
\`\`\`bash
# Rotate logs
./rotate-logs.sh
# View error logs
tail -f /home/gositeme/logs/lavocat-quebec/err.log
\`\`\`
## 🔧 Troubleshooting
### Common Issues
1. **Service won't start**: Check logs in \`/home/gositeme/logs/lavocat-quebec/\`
2. **Database connection errors**: Verify MySQL credentials in \`.env.production\`
3. **Port conflicts**: Ensure ports 3000 and 3443 are available
4. **Permission issues**: Make sure files are owned by gositeme user
### Log Locations
- Application logs: \`/home/gositeme/logs/lavocat-quebec/\`
- Apache logs: Check DirectAdmin logs
- Database logs: MySQL error log
## 📞 Support
- Domain: lavocat.quebec
- Database: gositeme_avocat
- User: gositeme
- Deployment path: /home/gositeme/domains/lavocat.quebec/public_html/
EOF
# Create a quick setup script
cat > "$TEMP_DIR/quick-setup.sh" <<EOF
#!/bin/bash
echo "🚀 Quick Setup for Lavocat Quebec"
echo "=================================="
# Check if we're in the right directory
if [ ! -f "package.json" ]; then
echo "❌ Error: package.json not found. Make sure you're in the project directory."
exit 1
fi
# Make scripts executable
chmod +x scripts/*.sh
chmod +x *.sh
# Install dependencies
echo "📦 Installing dependencies..."
npm ci --only=production
# Generate Prisma client
echo "🔧 Generating Prisma client..."
npx prisma generate
# Run migrations
echo "🗄️ Running database migrations..."
npx prisma migrate deploy
# Build application
echo "🏗️ Building application..."
npm run build:production
# Deploy
echo "🚀 Deploying application..."
npm run deploy:production
echo "✅ Setup completed!"
echo "🌐 Your application should be running at: https://lavocat.quebec"
echo "📋 Use './restart-production.sh' to restart the application"
EOF
chmod +x "$TEMP_DIR/quick-setup.sh"
# Create environment template
cat > "$TEMP_DIR/.env.production.template" <<EOF
# Production Environment Variables for lavocat.quebec
# Copy this to .env.production and update with your values
NODE_ENV=production
# Database Configuration (MySQL for production)
DATABASE_URL="mysql://gositeme_avocat:TDZEMAwNvFznSKQeDkjY@localhost:3306/gositeme_avocat"
# NextAuth Configuration
NEXTAUTH_URL=https://lavocat.quebec
NEXTAUTH_SECRET=your-production-secret-key-here
# OAuth Providers (Google, GitHub, etc.)
GOOGLE_ID=your-google-client-id
GOOGLE_SECRET=your-google-client-secret
# Email Configuration (SMTP)
EMAIL_SERVER_HOST=smtp.gmail.com
EMAIL_SERVER_PORT=587
EMAIL_SERVER_USER=your-email@gmail.com
EMAIL_SERVER_PASSWORD=your-app-password
EMAIL_FROM=noreply@lavocat.quebec
# Stripe Configuration
STRIPE_PUBLISHABLE_KEY=pk_test_your-stripe-publishable-key
STRIPE_SECRET_KEY=sk_test_your-stripe-secret-key
STRIPE_WEBHOOK_SECRET=whsec_your-webhook-secret
# File Upload Configuration
MAX_FILE_SIZE=10485760
UPLOAD_DIR=./public/uploads
# WebSocket Configuration
WS_PORT=3443
WS_SECRET=your-websocket-secret
# Security
JWT_SECRET=your-jwt-secret-key
ENCRYPTION_KEY=your-encryption-key
# Analytics (Optional)
GOOGLE_ANALYTICS_ID=GA_MEASUREMENT_ID
# CDN Configuration (Optional)
CDN_URL=https://cdn.lavocat.quebec
# Redis Configuration (if using Redis)
REDIS_URL=redis://localhost:6379
# Logging
LOG_LEVEL=info
LOG_FILE=./logs/production.log
# Performance
MAX_CONCURRENT_REQUESTS=100
REQUEST_TIMEOUT=30000
# Domain Configuration
DOMAIN=lavocat.quebec
WWW_DOMAIN=www.lavocat.quebec
EOF
# Create zip file
print_status "Creating zip package..."
zip -r "$PACKAGE_NAME" "$TEMP_DIR"/*
# Clean up
rm -rf "$TEMP_DIR"
print_success "Deployment package created: $PACKAGE_NAME"
print_status "Package includes:"
print_status " ✅ All source code"
print_status " ✅ Configuration files"
print_status " ✅ Deployment scripts"
print_status " ✅ Database setup"
print_status " ✅ Documentation"
print_status " ✅ Quick setup script"
print_status ""
print_status "📦 Upload this zip file to your server and extract it in:"
print_status " /home/gositeme/domains/lavocat.quebec/public_html/"
print_status ""
print_status "🚀 Then run: ./quick-setup.sh"