Ein Repository (deutsch: „Ablage“, „Speicher“ oder „Depot“) ist ein zentraler Ort, an dem Daten, Dateien oder Code organisiert, gespeichert und verwaltet werden. Der Begriff wird je nach Kontext etwas unterschiedlich verwendet – hier sind die häufigsten Bedeutungen:
Ein Repository ist ein Verzeichnis, das den Quellcode eines Projekts, Konfigurationsdateien, Dokumentationen und die Versionsgeschichte enthält. Es dient dazu, die Entwicklung von Software zu verfolgen, Änderungen zu speichern und im Team zusammenzuarbeiten.
🔁 Versionierung: Mit Tools wie Git kann man Änderungen rückgängig machen, alte Versionen vergleichen und neue Features in eigenen Branches entwickeln.
🤝 Zusammenarbeit: Entwickler können gemeinsam am Code arbeiten, Pull Requests stellen, Issues anlegen und Code-Reviews durchführen.
🌍 Remote-Repository: Online-Plattformen wie GitHub, GitLab oder Bitbucket hosten Repositories, damit Teams weltweit gemeinsam entwickeln können.
Beispiel:
git clone https://github.com/nutzername/mein-projekt.git
Ein Repository ist eine Sammlung von Softwarepaketen, die von einer Paketverwaltung (z. B. apt
, yum
, pip
) verwendet wird, um Programme zu installieren oder zu aktualisieren.
Beispiel:
sudo apt update
sudo apt install firefox
Auch außerhalb der IT kann ein „Repository“ eine Art Datenbank oder Archiv sein – z. B. für wissenschaftliche Publikationen oder digitale Sammlungen.
OpenID Connect (OIDC) ist ein Authentifizierungsprotokoll, das auf OAuth 2.0 basiert. Es ermöglicht es Clients (z. B. Web-Apps, Mobile-Apps), die Identität eines Benutzers sicher zu verifizieren, der sich bei einem externen Identitätsanbieter (IdP) anmeldet — zum Beispiel Google, Microsoft, Apple, etc.
OAuth 2.0 → regelt die Autorisierung (Zugriff auf Ressourcen)
OpenID Connect → regelt die Authentifizierung (Wer ist der Benutzer?)
Benutzer klickt auf "Login mit Google"
Deine App leitet den Benutzer zum Google-Login weiter
Nach erfolgreichem Login leitet Google den Benutzer mit einem ID Token zurück
Deine App validiert dieses JWT-Token
Du weißt nun, wer der Benutzer ist – verifiziert von Google
Das ID Token ist ein JSON Web Token (JWT) mit Informationen über den Benutzer, z. B.:
{
"iss": "https://accounts.google.com",
"sub": "1234567890",
"name": "John Doe",
"email": "john@example.com",
"iat": 1650000000,
"exp": 1650003600
}
iss
= Issuer (z. B. Google)
sub
= Benutzer-ID
email
, name
= Benutzerinformationen
iat
, exp
= Zeitstempel
"Login mit Google/Microsoft/Apple"
Single Sign-On (SSO) in Unternehmen
Zentrale Identitätsverwaltung (Keycloak, Auth0, Azure AD)
OAuth-basierte APIs mit Identitätsprüfung
Komponente | Beschreibung |
---|---|
Relying Party | Deine App, die den Login anfordert |
Identity Provider | Der externe Login-Anbieter (z. B. Google) |
ID Token | Das JWT mit den Benutzerinformationen |
UserInfo Endpoint | (Optional) API für weitere Benutzerdaten |
PEST ist ein moderner Testing-Framework für PHP, das vor allem durch seine lesbare Syntax, Expressivität und enge Integration mit PHPUnit besticht.
📌 PEST = "PHP Testing for Humans"
Es richtet sich an Entwickler, die saubere, lesbare und schnelle Tests schreiben wollen – ohne viel Boilerplate.
PEST basiert auf PHPUnit, aber es:
bietet eine minimalistische, expressive Syntax
entfernt unnötigen Overhead
unterstützt funktionalen, verhaltensbasierten Teststil
lässt sich optional mit einer klassischen PHPUnit-Struktur kombinieren
PHPUnit:
class UserTest extends TestCase
{
public function test_user_has_name()
{
$user = new User('John');
$this->assertEquals('John', $user->name);
}
}
PEST:
it('has a name', function () {
$user = new User('John');
expect($user->name)->toBe('John');
});
👉 Deutlich kürzer, besser lesbar – besonders bei vielen Tests.
✅ Elegante Syntax (ähnlich wie Jest oder Mocha in JavaScript)
🧪 Unterstützt unit, feature, API, browser-based Tests
🧱 Datengetriebene Tests (with([...])
)
🧬 Test-Hooks wie beforeEach()
/ afterEach()
🎨 Erweiterbar über Plugins & eigene Expectations
🔄 Kompatibel mit PHPUnit (du kannst PHPUnit-Tests weiter nutzen)
In einem Laravel- oder Composer-Projekt:
composer require pestphp/pest --dev
php artisan pest:install # (für Laravel-Projekte)
Dann kannst du direkt loslegen:
./vendor/bin/pest
PEST ist ideal, wenn du:
Tests schreiben willst, die Spaß machen
sauberen, modernen Code bevorzugst
bereits PHPUnit nutzt, aber Lust auf mehr Expressivität hast
💡 Viele moderne Laravel-Entwickler steigen auf PEST um, weil es sich perfekt in Laravel-Apps integriert und das Testen „menschlich“ macht – wie der Slogan schon sagt.
OPcache ist eine in PHP integrierte Bytecode-Caching-Erweiterung, die die Leistung von PHP-Anwendungen deutlich verbessert, indem sie den PHP-Code vorkompiliert und im Arbeitsspeicher (RAM) speichert.
Normalerweise passiert bei jedem PHP-Aufruf:
PHP liest den Quellcode (*.php-Datei)
Der Code wird geparst und in Bytecode umgewandelt
Der Bytecode wird vom PHP-Interpreter ausgeführt
Mit OPcache passiert dieser Vorgang nur einmal. Danach wird der bereits kompilierte Bytecode aus dem Speicher genommen und direkt ausgeführt.
Vorteil | Beschreibung |
---|---|
⚡ Schneller | Spart sich das erneute Parsen und Kompilieren bei jedem Request |
🧠 Weniger CPU-Last | Mehr Leistung, besonders bei hoher Last |
💾 In-Memory-Caching | Kein Festplattenzugriff auf PHP-Dateien |
🛡️ Sicherer & stabiler | Reduziert Risiko durch schlecht geschriebene Autoloader oder dynamischen Code |
php -i | grep opcache.enable
Oder im Code:
phpinfo();
📦 Typische Konfiguration (php.ini)
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.validate_timestamps=1
opcache.revalidate_freq=2
💡 In Produktionsumgebungen wird oft
opcache.validate_timestamps=0
gesetzt – das bedeutet: PHP prüft nicht mehr bei jedem Request, ob sich Dateien geändert haben → noch mehr Performance, aber Änderungen erfordern dann z. B. einen Cache-Reset oder Neustart.
OPcache bringt besonders viel bei:
Du kannst OPcache z. B. in einem Deployment-Tool mit folgendem Befehl leeren:
opcache_reset();
Oder über die Kommandozeile:
php -r "opcache_reset();"
OPcache ist ein einfacher, aber extrem effektiver Performance-Booster für jede PHP-Anwendung. Er sollte in jeder produktiven Umgebung aktiviert sein – es ist kostenlos, nativ in PHP enthalten und reduziert Ladezeiten sowie Serverlast drastisch.
Zero Trust ist ein Sicherheitskonzept, das auf dem Grundsatz basiert:
„Vertraue niemandem – weder innerhalb noch außerhalb des Netzwerks – ohne vorherige Prüfung.“
Im Gegensatz zu klassischen Sicherheitsmodellen, die internen Netzwerkzugriffen oft automatisch vertrauen, verlangt Zero Trust, dass jeder Zugriff authentifiziert, autorisiert und kontinuierlich überwacht wird – unabhängig vom Standort des Nutzers oder Geräts.
Verifikation statt Vertrauen
Jeder Nutzer, jedes Gerät, jeder Dienst muss sich authentifizieren – selbst wenn er „innerhalb“ des Netzwerks ist.
Least Privilege Access (Minimalrechte)
Benutzer und Dienste bekommen nur die Rechte, die sie wirklich brauchen – nicht mehr.
Kontinuierliche Überprüfung
Vertrauensentscheidungen werden laufend neu bewertet: z. B. durch Verhaltenserkennung, Standortänderungen, Geräte-Status etc.
Mikrosegmentierung
Netzwerke werden in kleine, isolierte Bereiche unterteilt, damit Angreifer sich nicht frei bewegen können.
Zentrale Sichtbarkeit und Logging
Jeder Zugriff wird protokolliert und überwachbar gemacht – für Audits, Compliance und Angriffsanalysen.
Multi-Faktor-Authentifizierung (MFA)
Identity & Access Management (IAM)
Gerätebewertung (Device Posture): z. B. Virenschutz, aktuelle Patches
VPN-Ersatz durch ZTNA (Zero Trust Network Access)
Cloud-native Firewalls, Mikrosegmentierung mit SDN
Monitoring & Anomalie-Erkennung (SIEM, UEBA)
Remote Work / Home Office: Mitarbeiter sind überall – nicht mehr „im sicheren Firmen-LAN“.
Cloud & SaaS-Dienste: Daten liegen nicht mehr nur im Rechenzentrum.
Höhere Bedrohungslage: Ransomware, Social Engineering, Insider-Angriffe.
Ohne Zero Trust:
Ein VPN-Nutzer erhält vollen Netzwerkzugriff, nur weil er eingeloggt ist.
Mit Zero Trust:
Der Nutzer muss sich regelmäßig authentifizieren, sein Gerät muss sicher sein, und er sieht nur die Dienste, die er wirklich braucht – kein „Blindvertrauen“.
Zero Trust ist kein einzelnes Produkt, sondern ein Strategieansatz für moderne IT-Sicherheit. Ziel ist es, durch ständige Verifikation und Minimierung von Zugriffsrechten Schäden durch Cyberangriffe, Fehlkonfigurationen oder menschliches Versagen drastisch zu reduzieren.
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.
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).
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
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
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 |
Laravel Octane ist eine offizielle Erweiterung für das Laravel-Framework, die die Performance deiner Anwendung dramatisch verbessert, indem sie Laravel auf Hochleistungsservern wie Swoole oder RoadRunner ausführt.
Statt bei jeder HTTP-Anfrage den Laravel-Framework-Code neu zu laden (wie bei PHP-FPM üblich), hält Octane deine Anwendung permanent im Speicher. Das spart Bootstrapping-Zeit und macht deine App viel schneller.
Laravel Octane nutzt Worker-basierte Server (z. B. Swoole oder RoadRunner), die:
Die Laravel-Anwendung einmalig booten,
Dann Anfragen wiederholt und schnell verarbeiten, ohne das Framework neu zu starten.
Vorteil | Beschreibung |
---|---|
⚡ Höhere Performance | Bis zu 10x schneller als klassische Laravel-Setups mit PHP-FPM |
🔁 Persistente Worker | Keine Neuinitalisierung bei jeder Anfrage |
🌐 WebSockets & Echtzeit | Direkte Unterstützung dank Swoole/RoadRunner |
🧵 Nebenläufigkeit | Möglichkeit zur parallelen Verarbeitung von Aufgaben |
🔧 Built-in Features | Task Worker, Route Watcher, Task Dispatching usw. |
RoadRunner ist ein High-Performance Application Server für PHP, der von Spiral Scout entwickelt wurde. Er ersetzt den klassischen PHP-FPM (FastCGI Process Manager) und bietet durch eine dauerhafte Ausführung deiner PHP-Anwendung einen massiven Performance-Schub – besonders bei Frameworks wie Laravel oder Symfony.
PHP-Skripte werden nicht bei jeder Anfrage neu geladen, sondern laufen dauerhaft in sogenannten Worker-Prozessen (ähnlich wie bei Node.js oder Swoole).
Dadurch sparst du dir das erneute Bootstrapping deiner App bei jedem Request – das ist wesentlich schneller als bei PHP-FPM.
RoadRunner selbst ist in der Programmiersprache Go geschrieben – das bedeutet hohe Stabilität, einfache Cross-Plattform-Deployments und parallele Verarbeitung von Anfragen.
HTTP-Server (inkl. HTTPS, Gzip, CORS, etc.)
PSR-7 & PSR-15 Middleware-Kompatibilität
Unterstützung für:
Hot Reload für Änderungen im Code (mit Watch-Modul)
RoadRunner startet PHP-Worker-Prozesse.
Die Worker laden einmal den gesamten Framework-Bootstrap.
RoadRunner verteilt HTTP- oder gRPC-Anfragen an die Worker.
Die Antwort wird über Go zurückgegeben – schnell und parallel.
Laravel + RoadRunner (statt Laravel + PHP-FPM)
Anwendungen mit hoher Request-Frequenz
APIs, Microservices, Echtzeit-Anwendungen (z. B. mit WebSockets)
Serverless-ähnliche Dienste, wo Latenz kritisch ist
Eigenschaft | PHP-FPM | RoadRunner |
---|---|---|
Bootstrapping pro Request | Ja | Nein (persistente Worker) |
Geschwindigkeit | Gut | Exzellent |
WebSockets | Nicht direkt | Ja |
gRPC | Nein | Ja |
Sprache | C | Go |
Die .htaccess
-Datei ist eine Konfigurationsdatei für Apache-Webserver, mit der du das Verhalten deiner Website direkt beeinflussen kannst – ohne Zugriff auf die zentrale Serverkonfiguration. Sie befindet sich typischerweise im Root-Verzeichnis deiner Website (z. B. /public_html
oder /www
).
Die .htaccess
wirkt nur auf Apache-Servern (nicht bei nginx).
Änderungen gelten sofort, du brauchst den Server nicht neu zu starten.
Viele Shared-Hosting-Anbieter erlauben .htaccess
, aber nicht alle Befehle sind immer erlaubt.
Fehlerhafte Einträge können deine Seite unbrauchbar machen – also Vorsicht beim Bearbeiten.
Least Privilege (deutsch: Prinzip der minimalen Rechte oder Minimalprinzip) ist ein grundlegendes Sicherheitsprinzip in der IT und Informationssicherheit. Es besagt:
Jede Person, jedes System oder jeder Prozess soll nur genau die Zugriffsrechte erhalten, die für die Ausführung seiner Aufgaben unbedingt notwendig sind – nicht mehr und nicht weniger.
Das Prinzip des geringsten Privilegs hilft dabei:
Sicherheitsrisiken zu minimieren: Wenn ein Angreifer ein Nutzerkonto kompromittiert, kann er nur auf das zugreifen, wozu dieses Konto berechtigt ist.
Fehlbedienungen zu vermeiden: Benutzer können keine unbeabsichtigten Änderungen an kritischen Systemen oder Daten vornehmen, wenn sie keinen Zugriff darauf haben.
Compliance-Anforderungen zu erfüllen: Viele Normen (z. B. ISO 27001, DSGVO) fordern eine Rechtevergabe nach dem Least-Privilege-Prinzip.
Ein Buchhalter hat Zugriff auf das Finanzsystem, aber nicht auf die Serverkonfiguration.
Ein Webserver-Prozess kann nur in seinem eigenen Verzeichnis schreiben, nicht ins Systemverzeichnis.
Ein Praktikant hat nur Leserechte auf einem Projektordner, aber keine Schreibrechte.
Rollenbasierte Zugriffskontrolle (RBAC)
Trennung von Administrator- und Benutzerkonten
Zeitlich begrenzte Berechtigungen
Regelmäßige Überprüfung von Berechtigungen (Access Reviews)