wsl-dev-server-setup.sh 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #!/usr/bin/env bash
  2. # WSL dev server setup: remove Caddy, install Apache+PHP, configure for feuerwehr project.
  3. # Run with: bash scripts/wsl-dev-server-setup.sh
  4. # You will be prompted for sudo when needed.
  5. set -e
  6. PROJECT_NAME="feuerwehr-freising-antragsformular"
  7. REPO_ROOT="/home/user/${PROJECT_NAME}"
  8. WWW_ROOT="/var/www"
  9. VHOST_NAME="feuerwehr-dev"
  10. SERVER_NAME="feuerwehr.local"
  11. echo "=== 1. Remove Caddy ==="
  12. if systemctl is-active --quiet caddy 2>/dev/null; then
  13. sudo systemctl stop caddy
  14. echo "Stopped caddy."
  15. fi
  16. if systemctl is-enabled --quiet caddy 2>/dev/null; then
  17. sudo systemctl disable caddy
  18. echo "Disabled caddy."
  19. fi
  20. if command -v caddy &>/dev/null; then
  21. sudo apt-get remove -y caddy || true
  22. echo "Removed caddy package."
  23. fi
  24. if [ -d /etc/caddy ]; then
  25. sudo rm -rf /etc/caddy
  26. echo "Removed /etc/caddy."
  27. fi
  28. if [ -d /var/lib/caddy ]; then
  29. sudo rm -rf /var/lib/caddy
  30. echo "Removed /var/lib/caddy."
  31. fi
  32. echo "Caddy removal done."
  33. echo ""
  34. echo "=== 2. Install Apache and PHP ==="
  35. sudo apt-get update -qq
  36. sudo apt-get install -y apache2 libapache2-mod-php php php-cli php-json php-mbstring php-xml
  37. sudo a2enmod rewrite
  38. echo "Apache and PHP installed; mod_rewrite enabled."
  39. echo ""
  40. echo "=== 3. Document root and symlink ==="
  41. sudo mkdir -p "$WWW_ROOT"
  42. if [ ! -L "${WWW_ROOT}/${PROJECT_NAME}" ]; then
  43. sudo ln -s "$REPO_ROOT" "${WWW_ROOT}/${PROJECT_NAME}"
  44. echo "Symlink ${WWW_ROOT}/${PROJECT_NAME} -> ${REPO_ROOT} created."
  45. else
  46. echo "Symlink ${WWW_ROOT}/${PROJECT_NAME} already exists."
  47. fi
  48. # Ensure www-data can read project and write storage
  49. sudo chmod -R o+rX "$REPO_ROOT"
  50. sudo chmod -R o+w "$REPO_ROOT/storage" 2>/dev/null || true
  51. echo "Permissions set for www-data."
  52. echo ""
  53. echo "=== 4. Apache vhost ==="
  54. VHOST_FILE="/etc/apache2/sites-available/${VHOST_NAME}.conf"
  55. sudo tee "$VHOST_FILE" << EOF
  56. <VirtualHost *:80>
  57. ServerName ${SERVER_NAME}
  58. DocumentRoot ${WWW_ROOT}/${PROJECT_NAME}
  59. <Directory ${WWW_ROOT}/${PROJECT_NAME}>
  60. AllowOverride All
  61. Require all granted
  62. </Directory>
  63. </VirtualHost>
  64. EOF
  65. echo "Vhost written to $VHOST_FILE."
  66. sudo a2ensite "${VHOST_NAME}.conf"
  67. # Disable default site if it would take port 80
  68. sudo a2dissite 000-default.conf 2>/dev/null || true
  69. sudo systemctl reload apache2
  70. echo "Site enabled and Apache reloaded."
  71. echo ""
  72. echo "=== Hosts entry ==="
  73. echo "Add this line to your hosts file so ${SERVER_NAME} resolves:"
  74. echo " 127.0.0.1 ${SERVER_NAME}"
  75. echo ""
  76. echo " Windows (run as Admin): notepad C:\\Windows\\System32\\drivers\\etc\\hosts"
  77. echo " WSL: sudo sed -i '/${SERVER_NAME}/d' /etc/hosts; echo '127.0.0.1 ${SERVER_NAME}' | sudo tee -a /etc/hosts"
  78. if ! grep -q "${SERVER_NAME}" /etc/hosts 2>/dev/null; then
  79. echo "127.0.0.1 ${SERVER_NAME}" | sudo tee -a /etc/hosts
  80. echo "Added ${SERVER_NAME} to /etc/hosts (WSL)."
  81. fi
  82. echo ""
  83. echo "=== Done ==="
  84. echo "Open http://${SERVER_NAME} in your browser to view the app."
  85. echo "To add more projects: symlink under ${WWW_ROOT}/ and add a new site in /etc/apache2/sites-available/."