# Quick Reference Cheat Sheet

## Server Information
- **New Server**: vps2.scala4.com
- **User**: root
- **Password**: Sun-Morning-Wind-2026

## Essential Commands

### Connect to New Server
```bash
ssh root@vps2.scala4.com
```

### Check Service Status
```bash
systemctl status apache2
systemctl status mariadb
systemctl status fail2ban
```

### Restart Services
```bash
systemctl restart apache2
systemctl restart mariadb
systemctl reload apache2
```

### View Logs
```bash
# System logs
journalctl -xe

# Apache error log
tail -f /var/log/apache2/error.log

# MySQL error log
tail -f /var/log/mysql/error.log
```

### PHP Commands
```bash
# Check PHP version
php8.1 -v
php7.4 -v

# Check loaded modules
php8.1 -m
php7.4 -m

# Check ionCube
php8.1 -m | grep ioncube
```

### MySQL Commands
```bash
# Connect to MySQL
mysql -u root -p

# List databases
mysql -u root -p -e "SHOW DATABASES;"

# Create database
mysql -u root -p -e "CREATE DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

# Import database
mysql -u root -p dbname < backup.sql

# Export database
mysqldump -u root -p dbname > backup.sql
```

### File Operations
```bash
# Set ownership
chown -R www-data:www-data /var/www/html/appname

# Set permissions
find /var/www/html/appname -type d -exec chmod 755 {} \;
find /var/www/html/appname -type f -exec chmod 644 {} \;

# Copy files (from old to new server)
rsync -avz --progress /var/www/html/appname/ root@vps2.scala4.com:/var/www/html/appname/
```

### Apache Commands
```bash
# Test configuration
apache2ctl configtest

# Enable site
a2ensite sitename.conf

# Disable site
a2dissite sitename.conf

# Reload Apache
systemctl reload apache2
```

### SSL Certificates
```bash
# Install certificate
certbot --apache -d domain.com

# List certificates
certbot certificates

# Renew certificates
certbot renew
```

### Disk & Memory
```bash
# Check disk space
df -h

# Check memory
free -h

# Find large files
find /var/www/html -type f -size +100M -ls
```

## Migration Pattern (For Each App)

### 1. Backup on Old Server
```bash
# Backup files
tar -czf /backup/appname-$(date +%Y%m%d).tar.gz /var/www/html/appname

# Backup database
mysqldump -u root -p dbname > /backup/dbname-$(date +%Y%m%d).sql
```

### 2. Transfer to New Server
```bash
# Copy files
rsync -avz --progress /var/www/html/appname/ root@vps2.scala4.com:/var/www/html/appname/

# Copy database
scp /backup/dbname-$(date +%Y%m%d).sql root@vps2.scala4.com:/root/
```

### 3. Setup on New Server
```bash
# Create database
mysql -u root -p -e "CREATE DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

# Import database
mysql -u root -p dbname < /root/dbname-$(date +%Y%m%d).sql

# Set permissions
chown -R www-data:www-data /var/www/html/appname
chmod -R 755 /var/www/html/appname

# Update config files (edit with nano)
nano /var/www/html/appname/config.php
```

## Priority Applications

### Priority 1 (Do First)
1. **WHMCS** - `/var/www/html/billing`, DB: `whmcs`
2. **Event Registration** - `/var/www/html/wordpress6/wordpress/EP`, DBs: `eventreg`, `eventregdb`
3. **Main WordPress** - `/var/www/html/mainsite`, DB: `mainsite`

### Priority 2 (Do Second)
4. Genealogy - `/var/www/html/wordpress6/wordpress/EP/genealogy`, DBs: `genealogy`, `webtrees`
5. El Paraiso - Multiple directories and databases
6. Accounts Receivable - DB: `accounts_receivable`

## Common Issues & Fixes

### Apache won't start
```bash
apache2ctl configtest
systemctl status apache2
journalctl -xe
```

### Permission denied errors
```bash
chown -R www-data:www-data /var/www/html/appname
chmod -R 755 /var/www/html/appname
```

### Database connection fails
```bash
# Check MySQL is running
systemctl status mariadb

# Check database exists
mysql -u root -p -e "SHOW DATABASES;"

# Check user permissions
mysql -u root -p -e "SELECT User, Host FROM mysql.user;"
```

### PHP errors
```bash
# Check error log
tail -f /var/log/apache2/error.log

# Check PHP config
php8.1 -i | grep "Loaded Configuration File"
```

## Emergency Contacts

### If Something Breaks
1. **Revert DNS** - Point back to old server
2. **Check logs** - `journalctl -xe` and `/var/log/apache2/error.log`
3. **Old server is backup** - Keep it running!
4. **Fix and retry** - Don't panic, take it step by step

## File Locations

- **Web root**: `/var/www/html`
- **Apache configs**: `/etc/apache2/sites-available/`
- **PHP configs**: `/etc/php/8.1/apache2/conf.d/`
- **MySQL data**: `/var/lib/mysql`
- **Logs**: `/var/log/apache2/`, `/var/log/mysql/`
- **Backups**: `/backup/`

