4 LAMP, WAMP, MAMP und Docker-Umgebungen

Eine effiziente Entwicklungsumgebung ist für die PHP-Entwicklung unerlässlich. In diesem Abschnitt stellen wir die gängigsten Stack-Lösungen vor, die alle Komponenten für die PHP-Entwicklung integrieren: Webserver, Datenbank, PHP und weitere nützliche Tools.

4.1 Der klassische LAMP-Stack

LAMP steht für Linux, Apache, MySQL/MariaDB und PHP. Dieser Stack ist der traditionelle Unterbau für PHP-Anwendungen und wird seit Jahrzehnten erfolgreich eingesetzt.

4.1.1 Installation eines LAMP-Stacks

4.1.1.1 Auf Ubuntu/Debian:

# Aktualisieren der Paketquellen
sudo apt update

# Installation der Komponenten
sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql

# Apache und MySQL starten
sudo systemctl start apache2
sudo systemctl start mysql

# Dienste für den Autostart konfigurieren
sudo systemctl enable apache2
sudo systemctl enable mysql

# MySQL sichern
sudo mysql_secure_installation

4.1.1.2 Auf CentOS/RHEL:

# Installation der Komponenten
sudo dnf install httpd mariadb-server php php-mysqlnd

# Apache und MariaDB starten
sudo systemctl start httpd
sudo systemctl start mariadb

# Dienste für den Autostart konfigurieren
sudo systemctl enable httpd
sudo systemctl enable mariadb

# MariaDB sichern
sudo mysql_secure_installation

4.1.2 Vorteile des LAMP-Stacks:

4.1.3 Nachteile:

4.2 WAMP: Windows-Alternative

WAMP steht für Windows, Apache, MySQL/MariaDB und PHP und bietet die LAMP-Funktionalität für Windows-Nutzer.

4.2.1 WAMP-Lösungen:

  1. WampServer: https://www.wampserver.com/ Eine umfassende Lösung mit grafischem Interface.

  2. XAMPP: https://www.apachefriends.org/ Funktioniert auf Windows, Linux und macOS.

  3. Laragon: https://laragon.org/ Moderne Alternative mit zusätzlichen Features für Laravel und andere Frameworks.

4.2.2 Installation von WampServer:

  1. Herunterladen und Ausführen des Installers von der offiziellen Website
  2. Wählen Sie die benötigten Komponenten während der Installation
  3. Starten Sie WampServer über das Windows-Startmenü
  4. Zugriff auf die Umgebung über das Taskleisten-Icon oder http://localhost

4.2.3 Konfiguration eines eigenen WAMP-Stacks:

Wenn Sie mehr Kontrolle benötigen, können Sie einen eigenen WAMP-Stack erstellen:

# Mit Chocolatey (Windows-Paketmanager)
choco install apache-httpd
choco install php
choco install mysql

# Apache-Konfiguration für PHP (httpd.conf)
LoadModule php_module "C:/php/php8apache2_4.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "C:/php"

4.2.4 Vorteile von WAMP:

4.2.5 Nachteile:

4.3 MAMP: Für macOS-Entwickler

MAMP steht für MacOS, Apache, MySQL/MariaDB und PHP und ist die bevorzugte Lösung für Apple-Nutzer.

4.3.1 MAMP-Lösungen:

  1. MAMP: https://www.mamp.info/ Einfache kostenlose Version mit allen Grundfunktionen.

  2. MAMP PRO: Kostenpflichtige Version mit zusätzlichen Features.

4.3.2 Installation von MAMP:

  1. Herunterladen des Installers von der offiziellen Website
  2. Ausführen des Installers und in den Programme-Ordner verschieben
  3. Starten von MAMP über den Launcher
  4. Zugriff über http://localhost:8888 (Standardport in MAMP)

4.3.3 Vorteile von MAMP:

4.3.4 Nachteile:

4.4 Docker: Der moderne Ansatz

Docker revolutioniert die Entwicklungsumgebungen durch Container-Technologie, die eine konsistente Umgebung über alle Plattformen hinweg ermöglicht.

4.4.1 Vorteile von Docker:

4.4.2 Installation von Docker:

  1. Docker Desktop herunterladen und installieren:
  2. Docker-Compose installieren (unter Linux, für Windows und macOS ist es bereits in Docker Desktop enthalten)

4.4.3 Einfacher PHP-Docker-Stack:

Hier ist ein einfaches Beispiel für eine docker-compose.yml Datei, die einen PHP-Stack definiert:

version: '3'

services:
  # PHP-Service mit Apache
  web:
    image: php:8.2-apache
    ports:
      - "80:80"
    volumes:
      - ./www:/var/www/html
    depends_on:
      - db
    networks:
      - php-network

  # MySQL-Datenbank
  db:
    image: mysql:8.0
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: myapp
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    volumes:
      - mysql-data:/var/lib/mysql
    networks:
      - php-network
      
  # phpMyAdmin für Datenbankverwaltung
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports:
      - "8080:80"
    environment:
      PMA_HOST: db
    depends_on:
      - db
    networks:
      - php-network

networks:
  php-network:

volumes:
  mysql-data:

Diese Konfiguration erstellt drei Container: 1. Einen Webserver mit PHP 8.2 und Apache 2. Einen MySQL 8.0 Datenbankserver 3. Eine phpMyAdmin-Instanz zur Datenbankverwaltung

4.4.4 Erweiterte Docker-Konfiguration:

Für umfangreichere Projekte können Sie ein eigenes Dockerfile erstellen, um ein angepasstes PHP-Image zu bauen:

FROM php:8.2-apache

# Apache-Konfiguration für Rewrite-Modul
RUN a2enmod rewrite

# Installation von PHP-Erweiterungen
RUN apt-get update && apt-get install -y \
    libzip-dev \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) \
    mysqli \
    pdo_mysql \
    zip \
    gd

# Composer installieren
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# Arbeitverzeichnis setzen
WORKDIR /var/www/html

# Apache-Server starten
CMD ["apache2-foreground"]

4.4.5 Starten des Docker-Stacks:

# Im Verzeichnis mit der docker-compose.yml
docker-compose up -d

# Überprüfen der laufenden Container
docker-compose ps

# Container-Logs anzeigen
docker-compose logs -f

# Container stoppen
docker-compose down

4.4.6 Verbindung zum PHP-Container:

# Shell im Web-Container öffnen
docker-compose exec web bash

# PHP-Version prüfen
php -v

# Composer im Container verwenden
composer --version

4.5 Docker für größere Projekte: Laravel Sail & Laradock

Für Laravel-Projekte gibt es spezialisierte Docker-Lösungen:

4.5.1 Laravel Sail

Laravel Sail ist eine leichtgewichtige Docker-Umgebung speziell für Laravel:

# Neues Laravel-Projekt mit Sail erstellen
curl -s "https://laravel.build/example-app" | bash

# Ins Projektverzeichnis wechseln
cd example-app

# Docker-Container starten
./vendor/bin/sail up

4.5.2 Laradock

Laradock ist eine umfassendere Docker-Umgebung, die für verschiedene PHP-Projekte genutzt werden kann:

# Laradock klonen
git clone https://github.com/laradock/laradock.git

# Ins Verzeichnis wechseln
cd laradock

# .env erstellen
cp .env.example .env

# Container starten
docker-compose up -d nginx mysql phpmyadmin

4.6 Entwicklungsumgebungen im Vergleich

Feature LAMP WAMP MAMP Docker
Betriebssystem Linux Windows macOS Alle
Isolation Gering Gering Gering Hoch
Konfigurationsaufwand Hoch Mittel Niedrig Mittel-Hoch
Portabilität Niedrig Niedrig Niedrig Hoch
Ressourcenverbrauch Niedrig Mittel Mittel Mittel-Hoch
Mehrere Projekte parallel Schwierig Schwierig Schwierig Einfach
Team-Kompatibilität Schwierig Schwierig Schwierig Einfach

4.7 Empfehlungen für verschiedene Szenarien

  1. Für Einsteiger: WAMP (Windows), MAMP (macOS) oder XAMPP (alle Plattformen)
  2. Für Profis mit einem Hauptprojekt: Angepasster LAMP-Stack
  3. Für Teams und mehrere Projekte: Docker