| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #!/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
- <VirtualHost *:80>
- ServerName ${SERVER_NAME}
- DocumentRoot ${WWW_ROOT}/${PROJECT_NAME}
- <Directory ${WWW_ROOT}/${PROJECT_NAME}>
- AllowOverride All
- Require all granted
- </Directory>
- </VirtualHost>
- 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/."
|