EasyInstall WordPress Post-Installation Guide for VPS
This comprehensive guide will help you manage your WordPress sites after installing EasyInstall, with a focus on WP scripts, cloud hosting, and backing up to the cloud.
📋 Table of Contents
- Quick Start
- WP Script Commands
- Cloud Hosting Configuration
- Backup to Cloud
- Advanced Management
- Troubleshooting
🚀 Quick Start
After installation, log out and back in for Docker permissions to take effect:
# Log out and log back in, then test:
easyinstall help
📝 WP Script Commands
Create WordPress Sites with Different Methods
Traditional WordPress (with separate Redis instance per site)
# Basic WordPress installation
easyinstall wp example.com
# With specific PHP version
easyinstall wp example.com --php=8.3
# With SSL enabled
easyinstall wp example.com --ssl
# With PHP 8.2 and SSL
easyinstall wp example.com --php=8.2 --ssl
Docker WordPress (isolated environment)
# Basic Docker WordPress
easyinstall wp-docker example.com
# With specific PHP version
easyinstall wp-docker example.com --php=8.3
# With specific MySQL version
easyinstall wp-docker example.com --mysql=8.0
# With SSL enabled (recommended for production)
easyinstall wp-docker example.com --ssl
# Full example with all options
easyinstall wp-docker mybusiness.com --php=8.3 --mysql=8.0 --ssl
List All Sites
# Show all sites with their Redis ports and Docker ports
easyinstall list
Delete a Site
# This also removes the dedicated Redis instance
easyinstall delete example.com
Redis Management for Traditional Sites
# Show all Redis instances and their status
easyinstall redis-status
# List all Redis ports in use
easyinstall redis-ports
# Restart Redis for a specific site
easyinstall redis-restart example.com
# Access Redis CLI for a specific site
easyinstall redis-cli example.com
Docker Site Management
# List all Docker sites with their ports
easyinstall docker-list
# Show all Docker ports in use
easyinstall docker-ports
# Start a Docker site
easyinstall docker-start example.com
# Stop a Docker site
easyinstall docker-stop example.com
# Restart a Docker site
easyinstall docker-restart example.com
# View logs (wordpress, nginx, db, redis)
easyinstall docker-logs example.com wordpress
easyinstall docker-logs example.com nginx
easyinstall docker-logs example.com db
easyinstall docker-logs example.com redis
# Shell into WordPress container
easyinstall docker-shell example.com
# Access Redis CLI for Docker site
easyinstall docker-redis example.com
PHP and HTML Sites
# Create a simple PHP info site
easyinstall php dev.example.com
# Create a static HTML site
easyinstall html landing.example.com
SSL Management
# Enable SSL for an existing traditional site
easyinstall ssl example.com
# For Docker sites, SSL must be enabled at creation
easyinstall wp-docker example.com --ssl
System Status and Monitoring
# Quick system status
easyinstall status
# Live monitoring (refreshes every 5 seconds)
easyinstall monitor
# Access Netdata dashboard
easyinstall netdata
# Then open: http://YOUR_SERVER_IP:19999
Backup
# Create daily backup
easyinstall backup daily
# Create weekly backup
easyinstall backup weekly
# Backup specific Docker site
easyinstall backup-docker example.com
☁️ Cloud Hosting Configuration
Configure Google Drive for Cloud Backups
# Configure Google Drive
easyinstall cloud-backup configure-gdrive
# Follow the interactive prompts:
# 1. Select "gdrive" when prompted for storage type
# 2. A URL will be displayed - open it in your browser
# 3. Log in to Google and authorize access
# 4. Copy the verification code back to terminal
Configure AWS S3 for Cloud Backups
# Configure AWS S3
easyinstall cloud-backup configure-s3
# You'll be prompted for:
# - AWS Access Key ID
# - AWS Secret Access Key
# - AWS Region (default: us-east-1)
# - S3 Bucket Name (must already exist)
Manual Configuration Files
If you prefer to edit configuration files directly:
# AWS credentials are stored at:
cat /root/.aws/credentials
# S3 bucket name is stored at:
cat /root/.easyinstall/s3-bucket
# Rclone (Google Drive) config is at:
cat /root/.config/rclone/rclone.conf
💾 Backup to Cloud
One-Time Cloud Backups
Backup a Single Site to Cloud
# Backup to Google Drive
easyinstall cloud-backup backup example.com gdrive
# Backup to AWS S3
easyinstall cloud-backup backup example.com s3
# Backup to both
easyinstall cloud-backup backup example.com both
Backup All Sites to Cloud
# Create backup script for all sites
cat > /usr/local/bin/backup-all-to-cloud.sh <<'EOF'
#!/bin/bash
# Backup all traditional sites
for site in /var/www/html/*; do
if [ -d "$site" ]; then
domain=$(basename "$site")
echo "Backing up $domain to Google Drive..."
/usr/local/bin/easy-cloud-backup backup "$domain" gdrive
fi
done
# Backup all Docker sites
for site in /var/lib/docker-sites/wordpress/*; do
if [ -d "$site" ]; then
domain=$(basename "$site")
echo "Backing up Docker site $domain to S3..."
/usr/local/bin/easy-cloud-backup backup "$domain" s3
fi
done
EOF
chmod +x /usr/local/bin/backup-all-to-cloud.sh
Schedule Automatic Cloud Backups
# Schedule daily backups to Google Drive
easyinstall cloud-backup schedule daily gdrive
# Schedule weekly backups to AWS S3
easyinstall cloud-backup schedule weekly s3
# Schedule daily backups to both
easyinstall cloud-backup schedule daily both
The cron jobs are created at:
# View scheduled backups
cat /etc/cron.d/easy-cloud-backup
Custom Backup Schedule
For more control, edit the cron file directly:
# Edit cron schedule (backup every 6 hours to both clouds)
cat > /etc/cron.d/easy-cloud-backup-custom <<'EOF'
0 */6 * * * root /usr/local/bin/easy-cloud-backup backup all both
30 1 * * * root /usr/local/bin/easy-cloud-backup backup all s3
30 13 * * * root /usr/local/bin/easy-cloud-backup backup all gdrive
EOF
List Cloud Backups
# List local backups
easyinstall cloud-backup list
# List Google Drive backups for a specific site
easyinstall cloud-backup list example.com gdrive
# List AWS S3 backups for a specific site
easyinstall cloud-backup list example.com s3
# List all backups (verbose)
easyinstall cloud-backup list example.com
One-Click Restore from Cloud
# Restore latest backup from local
easyinstall restore example.com latest local
# Restore latest from Google Drive
easyinstall restore example.com latest gdrive
# Restore latest from AWS S3
easyinstall restore example.com latest s3
# Restore specific backup from cloud
easyinstall restore example.com backup-20240101-120000.tar.gz gdrive
# Restore with confirmation
easyinstall restore example.com latest s3 && echo "Restore completed"
🔧 Advanced Management
Staging Sites (for Testing)
# Create staging site (staging.example.com)
easyinstall staging create example.com
# List all staging sites
easyinstall staging list
# Sync staging to production (push changes)
easyinstall staging sync example.com
# Alternative: push staging to production
easyinstall staging push example.com
# Delete staging site
easyinstall staging delete example.com
Git Integration
# Initialize git for a site
easyinstall git init example.com https://github.com/user/repo.git
# Deploy site from git
easyinstall git deploy example.com
# Check git status
easyinstall git status example.com
# Pull latest changes
easyinstall git pull example.com
# Push changes to remote
easyinstall git push example.com
# View recent commits
easyinstall git log example.com
# Create bare repository for local git server
easyinstall git create-repo myproject
# Then add remote: git remote add origin ssh://user@server/var/repo/myproject.git
Advanced Redis Management
Monitor Redis Memory Usage
# Create Redis monitoring script
cat > /usr/local/bin/redis-monitor.sh <<'EOF'
#!/bin/bash
echo "=== Redis Memory Usage ==="
echo "Main Redis (6379):"
redis-cli -p 6379 INFO memory | grep "used_memory_human"
for port in $(cat /var/lib/easyinstall/used_redis_ports.txt); do
if [ "$port" != "6379" ]; then
echo "Redis port $port:"
redis-cli -p $port INFO memory | grep "used_memory_human" 2>/dev/null || echo " Not responding"
fi
done
EOF
chmod +x /usr/local/bin/redis-monitor.sh
Flush Redis Cache for a Site
# Create flush script
cat > /usr/local/bin/flush-redis-site.sh <<'EOF'
#!/bin/bash
SITE=$1
REDIS_CONF="/etc/redis/redis-${SITE//./-}.conf"
if [ -f "$REDIS_CONF" ]; then
REDIS_PORT=$(grep "^port" "$REDIS_CONF" | awk '{print $2}')
echo "Flushing Redis cache for $SITE on port $REDIS_PORT..."
redis-cli -p $REDIS_PORT FLUSHALL
echo "Done"
else
echo "Site not found"
fi
EOF
chmod +x /usr/local/bin/flush-redis-site.sh
Docker Site Performance Optimization
# Optimize WordPress Docker site
cat > /opt/optimize-docker-site.sh <<'EOF'
#!/bin/bash
SITE=$1
cd "/var/lib/docker-sites/wordpress/$SITE"
# Update images
docker-compose pull
# Recreate containers with new images
docker-compose up -d --force-recreate
# Clean up old images
docker image prune -f
# Install Redis Object Cache plugin via WP-CLI
docker-compose exec wordpress wp plugin install redis-cache --activate
docker-compose exec wordpress wp redis enable
echo "Optimization complete for $SITE"
EOF
chmod +x /opt/optimize-docker-site.sh
Auto-Healing Configuration
The auto-healing service already runs, but you can customize it:
# Edit auto-healing configuration
cat > /etc/systemd/system/autoheal.service.d/override.conf <<'EOF'
[Service]
Environment="CHECK_INTERVAL=300" # Check every 5 minutes
Environment="DISK_THRESHOLD=85" # Alert at 85% disk usage
Environment="MEM_THRESHOLD=90" # Alert at 90% memory usage
EOF
systemctl daemon-reload
systemctl restart autoheal
🚨 Troubleshooting
Common Issues and Solutions
1. Redis Port Conflicts
# Check if ports are actually in use
netstat -tlnp | grep :6379
# Force remove a Redis port from tracking
sed -i '/^6380$/d' /var/lib/easyinstall/used_redis_ports.txt
# Reset Redis port tracking
rm /var/lib/easyinstall/used_redis_ports.txt
echo "6379" > /var/lib/easyinstall/used_redis_ports.txt
systemctl restart redis-server
2. Docker Port Conflicts
# Find which container is using a port
docker ps --format "table {{.Names}}\t{{.Ports}}" | grep 8080
# Change Docker site port manually
cd /var/lib/docker-sites/wordpress/example.com
sed -i 's/8080/8081/' docker-compose.yml
docker-compose up -d
3. SSL Certificate Issues
# Renew SSL certificate manually
certbot renew --force-renewal
# For Docker sites with SSL
cd /var/lib/docker-sites/wordpress/example.com
docker-compose stop nginx
certbot renew --standalone
docker-compose start nginx
4. Database Connection Issues
# Test MySQL connection
mysql -e "SHOW DATABASES"
# Reset MySQL root password if needed
systemctl stop mysql
mysqld_safe --skip-grant-tables &
mysql -u root -e "FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY '';"
systemctl restart mysql
5. WP-CLI Not Working
# Reinstall WP-CLI
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
mv wp-cli.phar /usr/local/bin/wp
Diagnostic Commands
# Check all services
easyinstall status
# Check Redis instances
easyinstall redis-status
# Check Docker containers
docker ps -a
# Check system logs
journalctl -xe -u nginx
journalctl -xe -u mysql
journalctl -xe -u redis-server
journalctl -xe -u redis-example-com # Site-specific Redis
# Check Nginx configuration
nginx -t
# Check firewall status
ufw status numbered
# Check disk usage
df -h
# Check memory
free -h
📊 Monitoring Dashboard
Create a custom monitoring dashboard:
cat > /usr/local/bin/dashboard.sh <<'EOF'
#!/bin/bash
while true; do
clear
echo "╔══════════════════════════════════════════════════════════╗"
echo "║ EasyInstall Live Dashboard ║"
echo "║ $(date) ║"
echo "╚══════════════════════════════════════════════════════════╝"
echo ""
echo "📊 SYSTEM RESOURCES"
echo " CPU: $(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)%"
echo " RAM: $(free -h | awk '/Mem:/ {print $3"/"$2}')"
echo " Disk: $(df -h / | awk 'NR==2 {print $3"/"$2 " ("$5")"}')"
echo ""
echo "🔌 SERVICE STATUS"
for service in nginx mysql redis-server fail2ban netdata; do
status=$(systemctl is-active $service 2>/dev/null)
if [ "$status" = "active" ]; then
echo " ✅ $service"
else
echo " ❌ $service"
fi
done
echo ""
echo "🐳 DOCKER SITES"
docker ps --format " • {{.Names}}: {{.Status}} ({{.Ports}})" 2>/dev/null | head -5
echo ""
echo "⚡ REDIS PORTS"
cat /var/lib/easyinstall/used_redis_ports.txt 2>/dev/null | while read port; do
if redis-cli -p $port PING &>/dev/null; then
echo " ✅ Port $port"
else
echo " ❌ Port $port"
fi
done
echo ""
echo "☁️ LAST CLOUD BACKUP"
latest=$(ls -t /backups/cloud/* 2>/dev/null | head -1)
if [ -n "$latest" ]; then
echo " $(basename $latest) ($(du -h $latest | cut -f1))"
else
echo " No cloud backups yet"
fi
echo ""
echo "Press Ctrl+C to exit. Refreshing every 5 seconds..."
sleep 5
done
EOF
chmod +x /usr/local/bin/dashboard.sh
Run the dashboard:
/usr/local/bin/dashboard.sh
🎯 Quick Reference Card
# CREATE SITES
easyinstall wp example.com --ssl # Traditional with SSL
easyinstall wp-docker example.com --ssl # Docker with SSL
# LIST SITES
easyinstall list # All sites with Redis ports
easyinstall docker-list # Docker sites only
# CLOUD BACKUPS
easyinstall cloud-backup configure-gdrive # Setup Google Drive
easyinstall cloud-backup configure-s3 # Setup AWS S3
easyinstall cloud-backup backup example.com gdrive # Backup to Google Drive
easyinstall cloud-backup schedule daily both # Schedule daily backups
# RESTORE
easyinstall restore example.com latest gdrive # Restore from Google Drive
# STAGING
easyinstall staging create example.com # Create staging site
easyinstall staging sync example.com # Push to production
# GIT
easyinstall git init example.com https://github.com/... # Git init
easyinstall git deploy example.com # Deploy
# MONITORING
easyinstall monitor # Live monitor
easyinstall netdata # Netdata dashboard
easyinstall redis-status # Redis instances
# DELETE
easyinstall delete example.com # Remove site and Redis
📚 Additional Resources
- Info File:
/root/easyinstall-info.txt - Credentials:
/root/example.com-credentials.txt(for traditional sites) - Credentials:
/var/lib/docker-sites/wordpress/example.com/credentials.txt(for Docker sites) - Backups:
/backups/ - Logs:
/var/log/easyinstall/ - Redis Tracking:
/var/lib/easyinstall/used_redis_ports.txt
☕ Support
If you find this tool useful, consider supporting the developer:
PayPal: https://paypal.me/sugandodrai
Your VPS is now fully configured with EasyInstall!
Each WordPress site gets its own Redis instance, Docker isolation, and cloud backup capabilities.

Leave a Reply