Zum Inhalt springen

Erste Schritte

GitLab CI/CD

Alternative zu Schritt 1 der Installation. Die Pipeline überträgt Quellcode, PHP-Abhängigkeiten und gebaute Assets — sie legt keine Datenbank und keine Geheimnisse an.

Einmalig, vor dem ersten Lauf

  1. Datenbank und Datenbankbenutzer anlegen.

  2. Zielverzeichnis für den Deployment-Benutzer zugänglich machen. Es darf leer sein.

  3. Im Zielverzeichnis eine produktive .env anlegen:

    APP_ENV=production
    APP_DEBUG=false
    APP_URL=https://go.example.org
    APP_KEY=base64:<zufaelliger-32-byte-schluessel>
    DB_CONNECTION=mysql
    DB_HOST=<datenbank-host>
    DB_PORT=3306
    DB_DATABASE=<datenbankname>
    DB_USERNAME=<datenbankbenutzer>
    DB_PASSWORD=<datenbankpasswort>
    
  4. GitLab-Variablen setzen:

    Variable Art
    SSH_PRIVATE_KEY maskiert, Base64-kodiert
    SSH_KNOWN_HOSTS File-Variable, Host-Key vorab lokal ermittelt und geprüft
    SERVER_USER, SERVER_IP, SERVER_PATH
    SERVER_PORT falls abweichend

APP_KEY nach dem ersten Produktiveinsatz nicht neu erzeugen — sonst sind gespeicherte Sitzungen und das in der Datenbank abgelegte SMTP-Passwort nicht mehr lesbar.

Was die Pipeline je nach Zustand tut

Sie ermittelt den Zustand über php artisan shortlink:installed (Exit-Code 0 oder 1).

Zustand Ablauf
eingerichtet Wartungsmodus, Dateien übertragen, composer install, migrieren, Caches schreiben, Wartungsmodus beenden
frisch Dateien übertragen, composer install. Keine Migration, kein Cache. Der Job endet als Warnung (orange) mit einer Handlungsaufforderung

Nach dem frischen Fall einmalig php artisan shortlink:install auf dem Server oder /install im Browser ausführen. Jedes weitere Deployment läuft dann den vollständigen Weg.

Der erste erfolgreiche Lauf führt die Migrationen aus und setzt den Symlink public/storage, wenn er noch fehlt.

Vor dem Übertragen prüft die Pipeline, ob das Zielverzeichnis beschreibbar ist und ob php (mindestens 8.4.1) und composer im PATH liegen.

.env, storage/ und vendor/ bleiben bei jedem Deployment erhalten (.rsync-exclude).

Quelle dieser Seite: docs/installation/pipeline.md im Repository. Sie wird beim Bauen daraus erzeugt — Änderungen gehören in die Markdown-Datei, nicht in diese Seite.