Files
EmailHostingPlatform/fix-apache.sh
Tommy Parnell 372203e599 ok try again
2025-08-03 16:04:35 -04:00

140 lines
3.0 KiB
Bash
Executable File

#!/bin/bash
# Fix Apache Configuration Script
# This script fixes common Apache issues after the main setup
set -euo pipefail
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
error() {
echo -e "${RED}ERROR: $1${NC}" >&2
exit 1
}
info() {
echo -e "${BLUE}INFO: $1${NC}"
}
success() {
echo -e "${GREEN}SUCCESS: $1${NC}"
}
warning() {
echo -e "${YELLOW}WARNING: $1${NC}"
}
# Check if running as root
if [[ $EUID -ne 0 ]]; then
error "This script must be run as root"
fi
info "Fixing Apache configuration..."
# Stop any conflicting services
info "Stopping conflicting services..."
if systemctl is-active --quiet nginx 2>/dev/null; then
systemctl stop nginx
systemctl disable nginx
success "Nginx stopped and disabled"
fi
if pgrep nginx > /dev/null; then
pkill nginx
success "Killed remaining nginx processes"
fi
# Stop Apache
systemctl stop apache2 2>/dev/null || true
# Check what's listening on ports 80 and 443
info "Checking port usage..."
if ss -tlnp | grep -q ":80 "; then
warning "Something is listening on port 80:"
ss -tlnp | grep ":80 "
fi
if ss -tlnp | grep -q ":443 "; then
warning "Something is listening on port 443:"
ss -tlnp | grep ":443 "
fi
# Enable required Apache modules
info "Enabling Apache modules..."
a2enmod ssl
a2enmod rewrite
a2enmod proxy
a2enmod proxy_fcgi
a2enmod setenvif
# Enable PHP-FPM
info "Configuring PHP-FPM..."
a2enconf php*-fpm
systemctl enable php*-fpm
systemctl restart php*-fpm
# Check if PostfixAdmin site exists and enable it
if [[ -f "/etc/apache2/sites-available/postfixadmin.conf" ]]; then
a2ensite postfixadmin
success "PostfixAdmin site enabled"
else
warning "PostfixAdmin site configuration not found"
fi
# Disable default site
a2dissite 000-default 2>/dev/null || true
# Test Apache configuration
info "Testing Apache configuration..."
if apachectl configtest; then
success "Apache configuration is valid"
else
error "Apache configuration has errors"
fi
# Start Apache
info "Starting Apache..."
systemctl enable apache2
systemctl start apache2
# Wait for Apache to start
sleep 3
# Check if Apache is running
if systemctl is-active --quiet apache2; then
success "Apache is running"
else
error "Apache failed to start"
fi
# Check listening ports
info "Checking Apache listening ports..."
if ss -tlnp | grep -q ":80.*apache"; then
success "Apache is listening on port 80"
else
warning "Apache is not listening on port 80"
fi
if ss -tlnp | grep -q ":443.*apache"; then
success "Apache is listening on port 443"
else
warning "Apache is not listening on port 443"
fi
# Show Apache status
info "Apache status:"
systemctl status apache2 --no-pager
# Show enabled sites
info "Enabled Apache sites:"
a2ensite 2>&1 | grep "already enabled" || echo "No sites explicitly enabled"
info "Apache configuration fix completed!"
info "You can check Apache error logs with: journalctl -u apache2 -f"
info "You can also check: /var/log/apache2/error.log"