376 lines
7.9 KiB
Markdown
376 lines
7.9 KiB
Markdown
# Troubleshooting Guide
|
|
|
|
Common issues and their solutions when using the LEMP WordPress automation.
|
|
|
|
## Connection Issues
|
|
|
|
### Ansible Connection Problems
|
|
|
|
**SSH Connection Refused:**
|
|
```bash
|
|
# Check if SSH service is running on target server
|
|
sudo systemctl status ssh
|
|
sudo systemctl start ssh
|
|
|
|
# Verify SSH port (default 22)
|
|
sudo netstat -tlnp | grep :22
|
|
|
|
# Test connection manually
|
|
ssh your_user@your_server_ip
|
|
```
|
|
|
|
**Permission Denied (publickey):**
|
|
```bash
|
|
# Use password authentication (if enabled in inventory)
|
|
ansible-playbook -i inventory/production.yml playbooks/lemp-wordpress.yml
|
|
|
|
# Or set up SSH keys (recommended)
|
|
ssh-keygen -t ed25519 -C "your-email@example.com"
|
|
ssh-copy-id your_user@your_server_ip
|
|
|
|
# Test SSH connection
|
|
ssh your_user@your_server_ip
|
|
```
|
|
|
|
**Host Key Verification Failed:**
|
|
```bash
|
|
# Remove old host key
|
|
ssh-keygen -R your_server_ip
|
|
|
|
# Or disable host key checking temporarily (not recommended for production)
|
|
export ANSIBLE_HOST_KEY_CHECKING=False
|
|
```
|
|
|
|
**Inventory File Syntax Error:**
|
|
```bash
|
|
# Validate inventory syntax
|
|
ansible-inventory -i inventory/production.yml --list
|
|
|
|
# Test connection to all hosts
|
|
ansible -i inventory/production.yml wordpress_servers -m ping
|
|
```
|
|
|
|
## Deployment Issues
|
|
|
|
### Package Installation Failures
|
|
|
|
**Package Not Found:**
|
|
```bash
|
|
# Update package cache on target server
|
|
sudo apt update
|
|
|
|
# Check if universe repository is enabled (Ubuntu)
|
|
sudo add-apt-repository universe
|
|
sudo apt update
|
|
```
|
|
|
|
**Lock Error (dpkg/apt):**
|
|
```bash
|
|
# Kill any running package managers on target server
|
|
sudo killall apt apt-get dpkg
|
|
|
|
# Remove locks
|
|
sudo rm /var/lib/apt/lists/lock
|
|
sudo rm /var/cache/apt/archives/lock
|
|
sudo rm /var/lib/dpkg/lock*
|
|
|
|
# Reconfigure packages
|
|
sudo dpkg --configure -a
|
|
```
|
|
|
|
## Service Issues
|
|
|
|
### Nginx Problems
|
|
|
|
**Nginx Won't Start:**
|
|
```bash
|
|
# Check configuration syntax
|
|
sudo nginx -t
|
|
|
|
# Check what's using port 80
|
|
sudo netstat -tlnp | grep :80
|
|
sudo lsof -i :80
|
|
|
|
# Check logs
|
|
sudo journalctl -u nginx -f
|
|
```
|
|
|
|
**403 Forbidden Error:**
|
|
```bash
|
|
### WordPress Issues
|
|
|
|
**WordPress Installation Fails:**
|
|
```bash
|
|
# Check if WP-CLI is installed
|
|
wp --info
|
|
|
|
# Check WordPress directory permissions
|
|
ls -la /var/www/html/
|
|
sudo chown -R www-data:www-data /var/www/html/
|
|
sudo chmod -R 755 /var/www/html/
|
|
|
|
# Verify wp-config.php
|
|
cat /var/www/html/wp-config.php
|
|
```
|
|
|
|
**Database Connection Error:**
|
|
```bash
|
|
# Test database connection from WordPress
|
|
mysql -u wp_user -p wordpress
|
|
|
|
# Check credentials in wp-config.php match inventory
|
|
grep DB_ /var/www/html/wp-config.php
|
|
|
|
# Verify database user exists
|
|
mysql -u root -p -e "SELECT user,host FROM mysql.user WHERE user='wp_user';"
|
|
```
|
|
|
|
### SSL/HTTPS Issues
|
|
|
|
**SSL Certificate Generation Fails:**
|
|
```bash
|
|
# Check if domain points to server
|
|
nslookup your-domain.com
|
|
|
|
# Verify firewall allows HTTP/HTTPS
|
|
sudo ufw status
|
|
sudo ufw allow 80
|
|
sudo ufw allow 443
|
|
|
|
# Check if ports are accessible
|
|
curl -I http://your-domain.com
|
|
```
|
|
|
|
**Mixed Content Warnings:**
|
|
```bash
|
|
# Update WordPress URLs in database
|
|
mysql -u root -p wordpress -e "UPDATE wp_options SET option_value = 'https://your-domain.com' WHERE option_name = 'home';"
|
|
mysql -u root -p wordpress -e "UPDATE wp_options SET option_value = 'https://your-domain.com' WHERE option_name = 'siteurl';"
|
|
|
|
# Or use WP-CLI
|
|
wp search-replace 'http://your-domain.com' 'https://your-domain.com' --dry-run
|
|
wp search-replace 'http://your-domain.com' 'https://your-domain.com'
|
|
```
|
|
|
|
## Performance Issues (Ultimate Mode)
|
|
|
|
### Redis Issues
|
|
|
|
**Redis Not Working:**
|
|
```bash
|
|
# Check Redis status
|
|
sudo systemctl status redis-server
|
|
|
|
# Test Redis connection
|
|
redis-cli ping
|
|
|
|
# Check Redis configuration
|
|
sudo cat /etc/redis/redis.conf | grep -v "^#" | grep -v "^$"
|
|
```
|
|
|
|
**WordPress Not Using Redis:**
|
|
```bash
|
|
# Check if Redis object cache plugin is active
|
|
wp plugin list --status=active
|
|
|
|
# Verify Redis cache is working
|
|
redis-cli monitor
|
|
# Then browse your WordPress site and watch for Redis activity
|
|
```
|
|
|
|
### PHP OPcache Issues
|
|
|
|
**OPcache Not Working:**
|
|
```bash
|
|
# Check if OPcache is loaded
|
|
php -m | grep -i opcache
|
|
|
|
# Check OPcache status
|
|
php -r "print_r(opcache_get_status());"
|
|
|
|
# Check PHP configuration
|
|
php --ini
|
|
grep opcache /etc/php/*/fpm/php.ini
|
|
```
|
|
|
|
## Service Management
|
|
|
|
### Restart All Services
|
|
```bash
|
|
# Restart all LEMP services
|
|
sudo systemctl restart nginx
|
|
sudo systemctl restart mysql
|
|
sudo systemctl restart php8.3-fpm
|
|
|
|
# For Ultimate mode, also restart Redis
|
|
sudo systemctl restart redis-server
|
|
```
|
|
|
|
### Check Service Status
|
|
```bash
|
|
# Check all service statuses
|
|
sudo systemctl status nginx mysql php8.3-fpm
|
|
|
|
# For Ultimate mode
|
|
sudo systemctl status redis-server
|
|
```
|
|
sudo systemctl status php8.3-fpm
|
|
|
|
# Check socket file
|
|
ls -la /run/php/php8.3-fpm.sock
|
|
|
|
# Check PHP-FPM configuration
|
|
sudo nginx -t
|
|
sudo php-fpm8.3 -t
|
|
```
|
|
|
|
**PHP Errors in WordPress:**
|
|
```bash
|
|
# Enable PHP error logging
|
|
sudo tail -f /var/log/php8.3-fpm.log
|
|
|
|
# Check WordPress debug
|
|
# Add to wp-config.php:
|
|
define('WP_DEBUG', true);
|
|
define('WP_DEBUG_LOG', true);
|
|
|
|
# Check WordPress logs
|
|
tail -f /var/www/html/wp-content/debug.log
|
|
```
|
|
|
|
## WordPress Issues
|
|
|
|
### WordPress Installation Problems
|
|
|
|
**White Screen of Death:**
|
|
```bash
|
|
# Check PHP errors
|
|
sudo tail -f /var/log/php8.3-fpm.log
|
|
sudo tail -f /var/log/nginx/error.log
|
|
|
|
# Increase PHP memory limit
|
|
sudo nano /etc/php/8.3/fpm/php.ini
|
|
# memory_limit = 256M
|
|
|
|
sudo systemctl restart php8.3-fpm
|
|
```
|
|
|
|
**Database Connection Error:**
|
|
```bash
|
|
# Verify wp-config.php settings
|
|
sudo cat /var/www/html/wp-config.php
|
|
|
|
# Test database connection manually
|
|
mysql -u wordpress_user -p wordpress_db
|
|
```
|
|
|
|
**File Permissions Issues:**
|
|
```bash
|
|
# Set correct WordPress permissions
|
|
sudo chown -R www-data:www-data /var/www/html/
|
|
sudo find /var/www/html/ -type d -exec chmod 755 {} \;
|
|
sudo find /var/www/html/ -type f -exec chmod 644 {} \;
|
|
sudo chmod 600 /var/www/html/wp-config.php
|
|
```
|
|
|
|
### Performance Issues
|
|
|
|
**Slow Website Loading:**
|
|
```bash
|
|
# Enable PHP OPcache
|
|
sudo nano /etc/php/8.3/fpm/php.ini
|
|
# opcache.enable=1
|
|
# opcache.memory_consumption=128
|
|
|
|
# Optimize MySQL
|
|
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
|
|
# innodb_buffer_pool_size = 256M
|
|
|
|
# Enable Nginx gzip
|
|
sudo nano /etc/nginx/nginx.conf
|
|
# gzip on;
|
|
```
|
|
|
|
## Security Issues
|
|
|
|
### File Permission Problems
|
|
|
|
**Incorrect Ownership:**
|
|
```bash
|
|
# WordPress files should be owned by www-data
|
|
sudo chown -R www-data:www-data /var/www/html/
|
|
|
|
# wp-config.php should have restricted permissions
|
|
sudo chmod 600 /var/www/html/wp-config.php
|
|
```
|
|
|
|
**Upload Directory Issues:**
|
|
```bash
|
|
# Create uploads directory if missing
|
|
sudo mkdir -p /var/www/html/wp-content/uploads
|
|
sudo chown www-data:www-data /var/www/html/wp-content/uploads
|
|
sudo chmod 755 /var/www/html/wp-content/uploads
|
|
```
|
|
|
|
## Network Issues
|
|
|
|
### Firewall Configuration
|
|
|
|
**Can't Access Website:**
|
|
```bash
|
|
# Check if UFW is blocking
|
|
sudo ufw status
|
|
sudo ufw allow 80
|
|
sudo ufw allow 443
|
|
|
|
# Check iptables
|
|
sudo iptables -L
|
|
```
|
|
|
|
**Domain/DNS Issues:**
|
|
```bash
|
|
# Test DNS resolution
|
|
nslookup yourdomain.com
|
|
dig yourdomain.com
|
|
|
|
# Test local access
|
|
curl -I http://localhost
|
|
curl -I http://your-server-ip
|
|
```
|
|
|
|
## Log Files Locations
|
|
|
|
Important log files for debugging:
|
|
|
|
- **Nginx Access:** `/var/log/nginx/access.log`
|
|
- **Nginx Error:** `/var/log/nginx/error.log`
|
|
- **PHP-FPM:** `/var/log/php8.3-fpm.log`
|
|
- **MySQL:** `/var/log/mysql/error.log`
|
|
- **WordPress:** `/var/www/html/wp-content/debug.log`
|
|
- **System:** `journalctl -f`
|
|
|
|
## Getting Help
|
|
|
|
1. **Check the logs first** - Most issues show up in the relevant log files
|
|
2. **Test each component individually** - Nginx, PHP, MySQL, WordPress
|
|
3. **Verify configuration files** - Use built-in syntax checkers
|
|
4. **Check file permissions** - Many issues are permission-related
|
|
5. **Open an issue** on GitHub with relevant log output
|
|
|
|
## Common Commands
|
|
|
|
```bash
|
|
# Restart all services
|
|
sudo systemctl restart nginx php8.3-fpm mysql
|
|
|
|
# Check all service status
|
|
sudo systemctl status nginx php8.3-fpm mysql
|
|
|
|
# Test configurations
|
|
sudo nginx -t
|
|
sudo php-fpm8.3 -t
|
|
|
|
# Monitor logs in real-time
|
|
sudo tail -f /var/log/nginx/error.log /var/log/php8.3-fpm.log
|
|
```
|