Skip to main content

Apache Troubleshooting

Common issues and solutions for Apache HTTP Server.


Check Apache Status​

sudo systemctl status apache2
sudo apache2ctl configtest

Common Issues​

1. Apache Won't Start​

Check Error Logs​

sudo tail -f /var/log/apache2/error.log

Common Solutions​

# Check if port 80 is in use
sudo netstat -tulpn | grep :80
sudo lsof -i :80

# Kill process using port 80
sudo fuser -k 80/tcp

# Check Apache configuration
sudo apache2ctl configtest # Ubuntu
sudo apachectl configtest # CentOS

2. Permission Issues​

Fix File Permissions​

sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

Fix Directory Permissions​

sudo chown www-data:www-data /var/www/html
sudo chmod 755 /var/www/html

3. Virtual Host Not Working​

Check Virtual Host Configuration​

sudo apache2ctl -S

Enable Site (Debian/Ubuntu)​

sudo a2ensite your-site.conf
sudo systemctl reload apache2

Check Virtual Host Files​

ls -la /etc/apache2/sites-enabled/
ls -la /etc/apache2/sites-available/

4. SSL Certificate Issues​

Check SSL Certificate​

# Check certificate validity
openssl x509 -in /etc/ssl/certs/your-cert.crt -text -noout

# Check certificate expiration
openssl x509 -in /etc/ssl/certs/your-cert.crt -noout -dates

Let's Encrypt Issues​

# Check certificate status
sudo certbot certificates

# Test renewal
sudo certbot renew --dry-run

# Force renewal
sudo certbot renew --force-renewal

5. .htaccess Not Working​

Check AllowOverride​

grep -r "AllowOverride" /etc/apache2/

Enable Required Modules​

sudo a2enmod rewrite
sudo a2enmod headers
sudo systemctl reload apache2

6. Performance Issues​

Check Apache Processes​

# Check running processes
ps aux | grep apache
ps aux | grep httpd

# Check memory usage
free -h

Optimize Apache Configuration​

sudo nano /etc/apache2/apache2.conf

Add/modify these settings:

# Reduce memory usage
MaxRequestWorkers 150
MaxConnectionsPerChild 0

# Enable keep-alive
KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100

7. Firewall Issues​

Debian/Ubuntu (UFW)​

# Check UFW status
sudo ufw status

# Allow Apache
sudo ufw allow 'Apache Full'

# Check if UFW is blocking
sudo ufw status numbered

CentOS (firewalld)​

# Check firewall status
sudo firewall-cmd --state

# Allow HTTP/HTTPS
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

# Check allowed services
sudo firewall-cmd --list-services

8. Log Analysis​

Check Access Logs​

sudo tail -f /var/log/apache2/access.log

Check Error Logs​

sudo tail -f /var/log/apache2/error.log

Monitor Real-time Logs​

sudo tail -f /var/log/apache2/*.log

Quick Diagnostic Commands​

IssueCommand
Check Apache statussudo systemctl status apache2
Test configurationsudo apache2ctl configtest
Check port usagesudo netstat -tulpn | grep :80
Check processesps aux | grep apache
Check logssudo tail -f /var/log/apache2/error.log
Check virtual hostssudo apache2ctl -S
Check modulessudo apache2ctl -M

Emergency Commands​

# Stop Apache immediately
sudo systemctl stop apache2

# Start Apache
sudo systemctl start apache2

# Restart Apache
sudo systemctl restart apache2

# Reload configuration
sudo systemctl reload apache2

Note: Always check logs first when troubleshooting Apache issues.