Files
Website-Stress-Test/setup-server.sh

61 lines
1.7 KiB
Bash

# setup-server.sh - Initial Setup Script
# 1. System Tuning for High Concurrency
echo "Tuning system limits..."
# Increase max open files for high connection counts
if ! grep -q "soft nofile 65535" /etc/security/limits.conf; then
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf
fi
# Apply limits to current session (for the rest of this script)
ulimit -n 65535
# 2. Install Global Dependencies
echo "Installing PM2..."
npm install -g pm2
# 3. Clone Repository
# ... (rest of cloning logic)
REPO_URL="$1"
APP_DIR="$2"
GITHUB_TOKEN="$3"
AUTH_REPO_URL="${REPO_URL/https:\/\//https:\/\/$GITHUB_TOKEN@}"
echo "Preparing application directory: $APP_DIR"
mkdir -p "$APP_DIR"
if [ -d "$APP_DIR/.git" ]; then
echo "Repo already exists. Pulling latest..."
cd "$APP_DIR"
git pull
else
echo "Cloning repository..."
git clone "$AUTH_REPO_URL" "$APP_DIR"
cd "$APP_DIR"
fi
# 4. Install App Dependencies
echo "Installing application dependencies..."
npm install
# 5. Start Application with PM2
APP_NAME="website-stress-test"
echo "Starting application with PM2 ($APP_NAME)..."
# Using Node built-in clustering, but PM2 monitors the master
pm2 stop "$APP_NAME" || true
pm2 start proxy-server.js --name "$APP_NAME" --max-memory-restart 1G
pm2 save
pm2 startup | tail -n 1 | bash # Setup startup script
# 6. Setup Cron Job for Auto-Sync
echo "Setting up Cron Job for auto-sync..."
SCRIPT_PATH="$APP_DIR/auto-sync.sh"
chmod +x "$SCRIPT_PATH"
# Add to crontab if not exists
(crontab -l 2>/dev/null; echo "*/5 * * * * $SCRIPT_PATH >> /var/log/app-sync.log 2>&1") | crontab -
echo "✅ Setup Complete! Application is running with system optimizations."
pm2 status