|
|
@@ -0,0 +1,93 @@
|
|
|
+#!/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/."
|