#!/bin/bash
# ====== CONFIGURATION ======
HOSTNAME="wordpress.local"
IP="127.0.0.1"
SITE_CONF="/etc/apache2/sites-available/wordpress.conf"
WEB_ROOT="/srv/www/wordpress"
DB_PASSWORD="changeme123"
# ============================
# Update system
apt update
apt upgrade -y
# Install required packages
apt install -y apache2 ghostscript libapache2-mod-php mysql-server php php-bcmath php-curl php-imagick php-intl php-json php-mbstring php-mysql php-xml php-zip
# Create WordPress directory and download
mkdir -p /srv/www
chown www-data: /srv/www
curl https://wordpress.org/latest.tar.gz | sudo -u www-data tar zx -C /srv/www
# Configure Apache VirtualHost
cat << EOF | sudo tee "$SITE_CONF" > /dev/null
ServerName $HOSTNAME
DocumentRoot $WEB_ROOT
Options FollowSymLinks
AllowOverride Limit Options FileInfo
DirectoryIndex index.php
Require all granted
Options FollowSymLinks
Require all granted
EOF
# Add hostname to /etc/hosts if not already present
if ! grep -q "$HOSTNAME" /etc/hosts; then
echo "$IP $HOSTNAME" | sudo tee -a /etc/hosts > /dev/null
fi
# Enable site and modules, disable default
a2ensite wordpress.conf
a2enmod rewrite
a2dissite 000-default.conf
systemctl reload apache2
# Create WordPress database and user
sudo mysql -u root <> "$WP_CONFIG"