Files
ansible-lemp-wordpress/docs/troubleshooting.md

7.9 KiB

Troubleshooting Guide

Common issues and their solutions when using the LEMP WordPress automation.

Connection Issues

Ansible Connection Problems

SSH Connection Refused:

# 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):

# 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:

# 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:

# 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:

# 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):

# 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:

# 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:

### 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:

# 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:

# 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:

# 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:

# 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:

# 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:

# 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

# 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

# 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:

# 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:

# 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:

# 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:

# 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:

# 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:

# 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:

# Check if UFW is blocking
sudo ufw status
sudo ufw allow 80
sudo ufw allow 443

# Check iptables
sudo iptables -L

Domain/DNS Issues:

# 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

# 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