bg_image
header

Deployer

Deployer ist ein Open-Source-Deployment-Tool für PHP-Projekte – speziell entwickelt, um Anwendungen wie Laravel, Symfony, Magento, WordPress oder auch generische PHP-Apps automatisiert, wiederholbar und sicher auf Server zu bringen.


🚀 Was macht Deployer besonders?

  • Es ist ein CLI-Tool, geschrieben in PHP.

  • Du definierst dein Deployment in einer deploy.php-Datei mit klaren Aufgaben (Tasks).

  • Es setzt auf das Prinzip Zero Downtime Deployment, z. B. durch Symlinks.

  • Unterstützt mehrstufige Umgebungen (z. B. staging, production).


🛠️ Typischer Workflow mit Deployer

Du installierst Deployer über Composer:

composer require deployer/deployer --dev

Du generierst ein Template:

vendor/bin/dep init

Du konfigurierst deploy.php, z. B. für Laravel:

host('mein-server.com')
    ->set('deploy_path', '/var/www/meinprojekt')
    ->set('branch', 'main');

task('deploy', [
    'deploy:prepare',
    'deploy:vendors',
    'artisan:migrate',
    'deploy:publish',
]);

Du startest das Deployment:

vendor/bin/dep deploy production

🔁 Was passiert im Hintergrund?

Deployer:

  • Verbindet sich via SSH mit dem Zielserver

  • Klont das Git-Repository in ein neues Release-Verzeichnis

  • Installiert Composer-Abhängigkeiten

  • Führt Tasks aus (z. B. php artisan migrate)

  • Verlinkt das neue Release mit dem Live-Verzeichnis (current)

  • Löscht alte Releases nach Bedarf


📦 Vorteile von Deployer

Vorteil Beschreibung
🚀 Schnell & Skriptbar Alles per CLI steuerbar
🔁 Rollback-Funktion Bei Fehlern einfach zum letzten funktionierenden Release zurück
⚙️ Flexibel erweiterbar Eigene Tasks, Hooks und Bedingungen
🧩 Viele Presets Für Laravel, Symfony, WordPress etc.
🔐 Sicher durch SSH Keine FTP-Abhängigkeit

Docker Compose

Docker Compose ist ein Werkzeug, mit dem du mehrere Docker-Container als einen einzigen Service definieren und starten kannst. Statt jeden Container einzeln über die Docker-CLI zu starten, kannst du mit Docker Compose eine docker-compose.yml-Datei schreiben, in der du alle benötigten Dienste (z. B. Datenbank, Webserver, App-Container) deklarierst.

Kurz gesagt:

Docker Compose = Projektbeschreibung + Mehrere Container + Ein Befehl zum Starten


Beispiel: docker-compose.yml

version: '3.9'
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
  redis:
    image: "redis:alpine"

In diesem Beispiel:

  • Ein Container baut die lokale Webanwendung.

  • Ein zweiter Container nutzt das offizielle Redis-Image.

  • Beide Container sind miteinander vernetzt.


Häufige Kommandos:

docker-compose up       # Startet alle Container im Vordergrund
docker-compose up -d    # Startet im Hintergrund (detached)
docker-compose down     # Stoppt und entfernt Container, Netzwerke etc.

Vorteile von Docker Compose:

✅ Einfaches Setup für Multi-Container-Anwendungen
✅ Alles wird in einer Datei versioniert (z. B. für Git)
✅ Reproduzierbare Entwicklungsumgebungen
✅ Leichtes Hoch- und Runterfahren ganzer Stacks


Typische Anwendungsfälle:

  • Lokale Entwicklung mit mehreren Services (z. B. App + DB)

  • Integrationstests mit vollständigem Stack

  • Simpler Deployment-Workflow (z. B. über CI/CD)


Cronjob

Ein Cronjob ist ein geplanter, wiederkehrender Hintergrundprozess auf Unix- oder Linux-basierten Systemen. Er wird vom Dienstprogramm cron ausgeführt, das regelmäßig überprüft, ob Aufgaben (Jobs) laut Zeitplan auszuführen sind.

Merkmale eines Cronjobs:

  • Automatisierung: Aufgaben wie Backups, Updates, E-Mail-Versand oder Skript-Ausführungen laufen automatisch.

  • Zeitsteuerung: Du legst genau fest, wann und wie oft ein Job ausgeführt werden soll (z. B. täglich um 3:00 Uhr oder jeden Montag).

  • Konfiguration: In sogenannten Crontabs (Cron-Tabellen) wird der Zeitplan definiert.

Syntax-Beispiel (in einer Crontab-Datei):

0 3 * * * /usr/bin/php /var/www/mein-skript.php

Bedeutung:

  • 0 3 * * * → Jeden Tag um 03:00 Uhr

  • /usr/bin/php /var/www/mein-skript.php → Das auszuführende Kommando

Zeitfelder im Überblick:

* * * * *  (Minute Stunde Tag Monat Wochentag)

Vorteile:

  • Spart Zeit durch Automatisierung

  • Verringert menschliche Fehler

  • Ideal für regelmäßige Aufgaben


Bourne Again Shell - Bash

Bash (Bourne Again Shell) ist eine weit verbreitete Unix-Shell und Kommandozeilen-Interpreter. Sie wurde als freie Software von der Free Software Foundation entwickelt und ist die Standard-Shell auf den meisten Linux-Systemen sowie auf macOS. Bash ist ein Nachfolger der ursprünglichen Bourne Shell (sh), die von Stephen Bourne in den 1970er Jahren entwickelt wurde.

Funktionen und Merkmale:

  • Kommandozeilen-Interpreter: Bash interpretiert und führt Befehle aus, die vom Benutzer über die Kommandozeile eingegeben werden.
  • Skripting: Bash ermöglicht das Schreiben von Shell-Skripten, das sind Dateien, die eine Folge von Befehlen enthalten. Diese Skripte können zur Automatisierung von Aufgaben verwendet werden.
  • Programmierung: Bash unterstützt viele Programmierkonstrukte wie Schleifen, Bedingungen und Funktionen, was es zu einem mächtigen Werkzeug für Systemadministration und Automatisierung macht.
  • Eingabeaufforderung: Bash bietet eine interaktive Umgebung, in der Benutzer Befehle eingeben können, die sofort ausgeführt werden.
  • Job-Steuerung: Bash erlaubt das Verwalten von Prozessen, wie zum Beispiel das Anhalten, Fortsetzen und Beenden von Prozessen.

Typische Aufgaben mit Bash:

  • Navigieren im Dateisystem (cd, ls, pwd).
  • Dateiverwaltung (cp, mv, rm, mkdir).
  • Prozessverwaltung (ps, kill, top).
  • Dateisuche (find, grep).
  • Textverarbeitung (sed, awk).
  • Netzwerkkonfiguration und -tests (ping, ifconfig, ssh).

Beispiel für ein einfaches Bash-Skript:

#!/bin/bash
# Einfache Schleife, die Hello World 5-mal ausgibt

for i in {1..5}
do
  echo "Hello World $i"
done

Zusammengefasst ist Bash eine mächtige und flexible Shell, die sowohl für interaktive Aufgaben als auch für komplexe Automatisierungsskripte verwendet werden kann.

 


Command Line Interface - CLI

Ein CLI (Command-Line Interface), auf Deutsch Kommandozeilen-Schnittstelle, ist eine Art von Benutzeroberfläche, die es Nutzern ermöglicht, mit einem Computer oder einer Softwareanwendung durch das Eingeben von Textbefehlen in eine Konsole oder ein Terminal zu interagieren. Im Gegensatz zu einer grafischen Benutzeroberfläche (GUI), die auf visuellen Elementen wie Schaltflächen und Symbolen basiert, erfordert ein CLI, dass Nutzer spezifische Befehle in Textform eingeben, um verschiedene Aufgaben auszuführen.

Hauptmerkmale einer CLI:

  1. Textbasierte Interaktion:

    • Benutzer interagieren mit dem System, indem sie Befehle in eine Kommandozeile oder ein Terminalfenster eingeben.
    • Befehle werden durch Drücken der Enter-Taste ausgeführt, und die Ausgabe oder das Ergebnis wird normalerweise als Text angezeigt.
  2. Präzision und Kontrolle:

    • CLI ermöglicht eine präzisere Kontrolle über das System oder die Anwendung, da Nutzer spezifische Befehle mit verschiedenen Optionen und Parametern eingeben können.
    • Fortgeschrittene Benutzer bevorzugen oft CLI für Aufgaben, die komplexe Operationen oder Automatisierung erfordern.
  3. Skripting und Automatisierung:

    • CLI eignet sich hervorragend für das Skripting, bei dem eine Reihe von Befehlen in einer Skriptdatei geschrieben und als Batch ausgeführt werden kann, um repetitive Aufgaben zu automatisieren.
    • Beispiele für Kommandozeilen-Skripte sind Shell-Skripte, Batch-Dateien und PowerShell-Skripte.
  4. Geringer Ressourcenverbrauch:

    • CLI benötigt im Vergleich zu GUI in der Regel weniger Ressourcen, da es keine grafische Darstellung erfordert.
    • Es wird häufig auf Servern, eingebetteten Systemen und in anderen Umgebungen verwendet, in denen Ressourcen begrenzt sind oder Effizienz Priorität hat.

Beispiele für CLI-Umgebungen:

  • Windows-Eingabeaufforderung (cmd.exe): Der integrierte Kommandozeileninterpreter für Windows-Betriebssysteme.
  • Linux/Unix-Shell (Bash, Zsh, etc.): Häufig verwendete Kommandozeilenumgebungen auf Unix-basierten Systemen.
  • PowerShell: Ein von Microsoft entwickeltes Framework für Aufgabenautomatisierung und Konfigurationsmanagement, das eine Kommandozeilen-Shell und Skriptsprache umfasst.
  • macOS Terminal: Die integrierte Terminalanwendung auf macOS, die den Zugriff auf die Unix-Shell ermöglicht.

Vorteile einer CLI:

  • Effizienz: CLI kann für erfahrene Benutzer schneller sein, da Befehle schnell ausgeführt werden können, ohne dass Menüs oder Fenster durchsucht werden müssen.
  • Mächtiges Skripting: CLI ist ideal für die Automatisierung von Aufgaben durch Skripting und daher ein wertvolles Werkzeug für Systemadministratoren und Entwickler.
  • Flexibilität: CLI bietet größere Flexibilität bei der Ausführung von Aufgaben, da Befehle mit Optionen und Argumenten angepasst werden können, um spezifische Ergebnisse zu erzielen.

Nachteile einer CLI:

  • Hohe Lernkurve: CLI erfordert, dass Benutzer Befehle auswendig lernen und deren Syntax verstehen, was für Anfänger eine Herausforderung sein kann.
  • Fehleranfälligkeit: Tippfehler oder falsche Optionen können zu Fehlern, unbeabsichtigten Aktionen oder sogar zu Systemproblemen führen.
  • Weniger intuitiv: CLI ist weniger visuell intuitiv als GUI und daher weniger zugänglich für Gelegenheitsnutzer, die grafische Oberflächen bevorzugen.

Zusammenfassung:

Eine CLI ist ein leistungsstarkes Werkzeug, das Benutzern die direkte Kontrolle über ein System oder eine Anwendung durch Textbefehle ermöglicht. Sie wird häufig von Systemadministratoren, Entwicklern und fortgeschrittenen Benutzern verwendet, die Präzision, Effizienz und die Möglichkeit zur Automatisierung von Aufgaben benötigen. Obwohl sie eine steilere Lernkurve im Vergleich zu einer GUI hat, machen ihre Flexibilität und Leistung sie in vielen technischen Umgebungen unverzichtbar.