#!/usr/bin/env bash # WSL dev server setup: remove Caddy, install Apache+PHP, configure for feuerwehr project. # Run with: bash scripts/wsl-dev-server-setup.sh # You will be prompted for sudo when needed. set -e PROJECT_NAME="feuerwehr-freising-antragsformular" REPO_ROOT="/home/user/${PROJECT_NAME}" WWW_ROOT="/var/www" VHOST_NAME="feuerwehr-dev" SERVER_NAME="feuerwehr.local" echo "=== 1. Remove Caddy ===" if systemctl is-active --quiet caddy 2>/dev/null; then sudo systemctl stop caddy echo "Stopped caddy." fi if systemctl is-enabled --quiet caddy 2>/dev/null; then sudo systemctl disable caddy echo "Disabled caddy." fi if command -v caddy &>/dev/null; then sudo apt-get remove -y caddy || true echo "Removed caddy package." fi if [ -d /etc/caddy ]; then sudo rm -rf /etc/caddy echo "Removed /etc/caddy." fi if [ -d /var/lib/caddy ]; then sudo rm -rf /var/lib/caddy echo "Removed /var/lib/caddy." fi echo "Caddy removal done." echo "" echo "=== 2. Install Apache and PHP ===" sudo apt-get update -qq sudo apt-get install -y apache2 libapache2-mod-php php php-cli php-json php-mbstring php-xml sudo a2enmod rewrite echo "Apache and PHP installed; mod_rewrite enabled." echo "" echo "=== 3. Document root and symlink ===" sudo mkdir -p "$WWW_ROOT" if [ ! -L "${WWW_ROOT}/${PROJECT_NAME}" ]; then sudo ln -s "$REPO_ROOT" "${WWW_ROOT}/${PROJECT_NAME}" echo "Symlink ${WWW_ROOT}/${PROJECT_NAME} -> ${REPO_ROOT} created." else echo "Symlink ${WWW_ROOT}/${PROJECT_NAME} already exists." fi # Ensure www-data can read project and write storage sudo chmod -R o+rX "$REPO_ROOT" sudo chmod -R o+w "$REPO_ROOT/storage" 2>/dev/null || true echo "Permissions set for www-data." echo "" echo "=== 4. Apache vhost ===" VHOST_FILE="/etc/apache2/sites-available/${VHOST_NAME}.conf" sudo tee "$VHOST_FILE" << EOF ServerName ${SERVER_NAME} DocumentRoot ${WWW_ROOT}/${PROJECT_NAME} AllowOverride All Require all granted EOF echo "Vhost written to $VHOST_FILE." sudo a2ensite "${VHOST_NAME}.conf" # Disable default site if it would take port 80 sudo a2dissite 000-default.conf 2>/dev/null || true sudo systemctl reload apache2 echo "Site enabled and Apache reloaded." echo "" echo "=== Hosts entry ===" echo "Add this line to your hosts file so ${SERVER_NAME} resolves:" echo " 127.0.0.1 ${SERVER_NAME}" echo "" echo " Windows (run as Admin): notepad C:\\Windows\\System32\\drivers\\etc\\hosts" echo " WSL: sudo sed -i '/${SERVER_NAME}/d' /etc/hosts; echo '127.0.0.1 ${SERVER_NAME}' | sudo tee -a /etc/hosts" if ! grep -q "${SERVER_NAME}" /etc/hosts 2>/dev/null; then echo "127.0.0.1 ${SERVER_NAME}" | sudo tee -a /etc/hosts echo "Added ${SERVER_NAME} to /etc/hosts (WSL)." fi echo "" echo "=== Done ===" echo "Open http://${SERVER_NAME} in your browser to view the app." echo "To add more projects: symlink under ${WWW_ROOT}/ and add a new site in /etc/apache2/sites-available/."