Skip to main content
Home
Schatzchaeschtli 2026

Main navigation

  • Home
User account menu
  • Log in

Breadcrumb

  1. Home

Basisinstallation Drupal 11

By PierreAdmin , 29 August 2026

Schritt für Schritt Anleitung für eine simple Basisinstallation einer leeren und frischen Drupal 11 Instanz. Sie ist auch Basis für ein neues per.net Projekt, die sich an einigen Stellen aber untersheiden können. Ist im Manual aber vermerkt.

Ziel

Dieses Manual zeigt Schritt für Schritt eine Drupal Installation mit Composer, inkl. Einrichten von MAMP, MySQL Datenbank, drush und git und Einrichten eines Gitlab Repositories. Es basiert auf meiner Testumgebung, die ich zum Testen von einzelnen Task verwenden will und schnell mittels komplettem Backup wieder auf den Ursprungszustand zurücksetzen kann.

Die Testinstallation dient ausschliesslich zum Testen von Drupal-Core, Modulen und Konfigurationen.

Nach Abschluss eines Tests kann die komplette Installation mittels Backup wieder auf den Ausgangszustand zurückgesetzt werden.

Die Installation dient als reproduzierbare Drupal-Basis. Neue Tests beginnen immer wieder von diesem definierten Ausgangszustand, ohne Basismodule, ausser shield zum schützen der Testumgebung.

Namenskonventionen

Domain                     DB              User              PW
d11-test1.selfip.net       d11-test1       d11-test1Admin    tester1
d11-test2.selfip.net       d11-test2       d11-test2Admin    tester2
d11-test3.selfip.net       d11-test3       d11-test3Admin    tester3

 1 -- Installation

Projektverzeichnis mit der folgenden Struktur anlegen:

d11-test1/                  Projektverzeichnis
├── --pernet-arbeitsfiles/
├── --pernet-docs/
├── config/
├── private/
    ├── db-dump/
    ├── tmp/
└── public/                 Composer-Root
    ├── composer.json
    ├── composer.lock
    ├── vendor/
    └── web/                Drupal-Root / Site-Folder (Mamp)
└── tools/                  Lokale Erweiterungen, z.B. browser-sync
    ├── frontend/
1.1 -- Datenbank einrichten

Neue Datenbank gemäss Namenskonvention (oben) einrichten:

  • MAMP
    •  Webstart > Tools > PHPmyAdmin
  • PHPmyAdmin
    • Neue Datenbank erstellen (Kollation: utf8mb4_general_ci)
    • Neuen Benutzer anlegen (Nur Benutzername, PW, keine weiteren Settings nötig)
      so wird der Benutzer direkt der neu erstellten DB zugeordnet und erhält alle Rechte
1.2 -- Drupal Struktur mit Composer anlegen
  • vscode > Terminal
    • ### WICHTIG: ins Public Verzeichnis wechseln:
      • cd public
    • PHP Version prüfen (Aktuell für Drupal 11.4: php 8.3) 
    • ### WICHTIG!!!
      • MAMP php Version muss mit der Composer PHP übereinstimmen.
      • which php
        php -v
        usephp83
        php -v
      • Konfiguration für verschiedene PHP-Versionen ist in ~/.zshrc definiert und aktuell für 
      • php 7.4, php 8.3, php 8.4
      • definiert (Stand August 2026)
    • composer create-project drupal/recommended-project .
  • sites/default/default.settings.php > in settings.php duplizieren
  • hash_salt erzeugen: (Terminal)
    • php -r 'echo bin2hex(random_bytes(32)), PHP_EOL;'
  • Ausgabe kopieren und in der settings.php einfügen:
    • $settings['hash_salt'] = 'HIER_DEN_ERZEUGTEN_WERT_EINSETZEN';
  • DB-Einstellungen inklusive Kollation und Config-Sync-Verzeichnis am Ende der settings.php einfügen. Damit wird sichergestellt, dass beim Erstellen von Datenbanktabellen die richtige Kollation verwendet wird und die DB-Einträge nicht mehr abgefragt und ohne Kollation überschrieben werden. Mit diesen Einstellungen, wird die DB-Einstellungsseite im Installationsprozess nicht mehr angezeigt.
     
  • /**
     * Database connection.
     */
    $databases['default']['default'] = array (
      'database' => 'DB-NAME_drupal',
      'username' => 'DB-USERAdmin',
      'password' => 'DB-PASSWORD',
      'prefix' => '',
      'host' => '127.0.0.1',
      'port' => '3306',
      'collation' => 'utf8mb4_general_ci',
      'isolation_level' => 'READ COMMITTED',
      'driver' => 'mysql',
      'namespace' => 'Drupal\\mysql\\Driver\\Database\\mysql',
      'autoload' => 'core/modules/mysql/src/Driver/Database/mysql/',
    );
    
    /**
     * Location of the site configuration files.
     */
    $settings['config_sync_directory'] = dirname($app_root, 2) . '/config/sync';
1.3 -- MAMP einrichten
  • MAMP
    • New Site > Empty
    • Site name: [domainname.selfip.net]
    • Site folder festlegen: /public/web
    • PHP Version prüfen (Aktuell für Drupal 11.4: php 8.3)
    • SSL einrichten (manual folgt ...)
1.4 -- Drupal Installieren
  • Site-URL im Browser aufrufen
  • Installation in Englisch starten
  • Installationsprofil: Standard
  • DB-Daten: Diese Seite wird übersprungen, weil wir in der settings.php schon alles definiert haben.
  • Site Name und weitere Basisinfos eintragen:
  • Sitename: Projektname
  • Site email address: webmaster@projektname.ch 
  • (Systemmeldungen werden mit dieser Absenderadresse versandt)
  • Username: [Mein Adminname]
  • Password: [xxxx]
  • E-Mail: mail@per-net.ch
  • Timezone: Zurich
1.5. -- Settings und unverzichtbare Module installieren
  • Drush installieren >> Checken ob ich im /public stehe: 
    • composer require --dev 'drush/drush'
  • Shield installieren: 
    • composer require 'drupal/shield:^1.8'
  • Shield aktivieren und konfigurieren
  • WICHTIG: Für Installation eines per.net Projektes Shield nur aktivieren, aber keine PW einrichten und das Modul auch nicht enablen. Das wird in den lokalen Settings gemacht und ist beim Aritkel settings explizit dokumentiert, damit beim config export (drushh cex) die PW nicht versioniert in git liegen.
    • User: pernet
      PW: pernet
    • Allow command line access > aktiviert lassen, sonst funktioniert drush oder composer nicht.
  • Konfigurations-Export prüfen, nachdem drush läuft, damit wir sichergestellt haben, dass config richtig exportiert wird.
    • drushh cex
WICHTIG: 
Ab hier nur noch für die einfache Testinstallation weiter machen. Für ein neues per.net Projekt den Anweisungen unter «per.net Projekt einrichten» folgen.
1.5 -- Git einrichten
  • ### WICHTIG: ins Projektverzeichnis wechseln, nicht in public aufrufen. 
    Es muss die komplette Struktur ins Git Repository aufgenommen werden, nicht nur der Inhalt von project.
  • ### WICHTIG: Die Testinstallation hat nicht das Settings-Setup, das ich für Standardprojekte verwende. 
    Ist zum testen nicht nötig und unnötig aufwändig zum einrichten.
  • git init
  • .gitignore erstellen und folgenden Code einkopieren:
  • # macOS
    .DS_Store
    
    # VS Code
    .vscode/
    
    # Composer-Abhängigkeiten
    public/vendor/
    
    # Drupal Core
    public/web/core/
    
    # Öffentliche Dateien
    public/web/sites/*/files/
    
    # Private Dateien
    private/
    
    # Logs
    *.log
    
    # Lokale Drupal-Einstellungen mit Datenbankzugang
    public/web/sites/default/settings.php
    
    # DB-Dump
    --pernet-docs/db-dump
1.6 -- Gitlab einrichten
  • Neues Projekt anlegen
  • User auswählen: per.net
  • Projektname angeben z.B.: [domainname]
  • Keine Readme-Datei erstellen
  • Nur für Testumgebungen: 
    • Projekt in gitlab anwählen, linke Spalte:
    • Settings > Repository > Branch rules > main > view details
    • «Allow force push» einschalten (Ausdrücklich nur für Testumgebung, um Projekt ohne Neuinstallation wieder zurücksetzen zu können.)
      • «Allow force push» ermöglicht den Befehl: git push --force-with-lease origin main 
  • der wie weiter unten beschrieben beim «reseten» den aktuellen Stand auf gitlab überschreibt.
1.7 -- Git mit Repository verknüpfen
  • im Root-Verzeichnis:
  • git remote add origin git@gitlab.com:per.net/[domainname].git
  • Zur Kontrolle:
  • git remote -v
1.8 -- Erster commit
  • git status
    git add .
    git commit -m "Initial commit - Drupal 11.4.4 - 16.07.2026 - Base install with Drush and Shield"
    git push -u origin main
  • ### WICHTIG: 
    Gilt nur für den ersten push in ein neues, leeres Gitlab Projekt. 
    Legt Branch main auf GitLab an und verbindet meinen lokalen main damit 
  • git push -u origin main
  •  
  • git push --force-with-lease origin main
  • ### WICHTIG: 
  • git push --force-with-lease origin main 
  • Gilt, wenn ein bestehendes gitlab Projekt vorhanden ist. 
    Erklärung: Der Branch main wird durch den lokalen Stand ersetzt. Frühere Commits gehören danach nicht mehr zum sichtbaren Verlauf von main.
  • git push
    Dieser Kurzbefehl reicht für alle späteren push Befehle

     

  • ### TIPP: Falls in vscode noch Punkte da stehen, obwohl git clean ist, folgenden Schritt in vscode ausführen:
    • Cmd + Shift + P (oder Menu > View > Command palette)
    • Developer: Reload Window

 

1.9 -- BACKUP
  • DB-Dump in --pernet-docs/db-dump legen
  • Wie früher komplette Codebase vom Projektverzeichnis duplizieren, zippen und klar benennen, mit Datum und Version und in übergeordneten Backup Ordner schieben. Das ungezipte Duplikat kann man nach dem zippen löschen.
  • Namensmuster: d11--test-1--BACKUP--d11.4.4--16.07.2026.zip

2 -- Reset

2.1 -- Daten zurückspielen
  • Gesamten Inhalt im Projekt-Root löschen
  • DB-Backup wieder zurück kopieren
    • DB: Alle Tabellen in Sequal Ace löschen und Backup einspielen
  • gitlab wieder auf den ersten commit zurücksetzen, falls gepusht wurde
  • Erst prüfen ob git ok ist
  • git status
    git remote -v
    git fetch origin
    git push --force-with-lease origin main
  • Erklärung
  • git remote -v
  • Zuerst prüfen ob auf das richtige gitlab Repository zugegrifen wird
  • git fetch origin
  • Lädt den aktuellen Stand von GitLab herunter, ohne lokale Dateien zu verändern (fetch vs pull). Dadurch weiss Git, welcher Commit aktuell auf origin/main liegt.
  • git push --force-with-lease origin main
  • Ersetzt den Branch main auf GitLab durch den lokalen Stand.
  • Der neue Initial-Commit wird dadurch zum aktuellen Startpunkt des Projekts. Ältere Commits gehören nicht mehr zum sichtbaren Branch-Verlauf.
  • drupal
  • drupal 11
  • test
  • git
Drupal

Tag Suche

Categories (Taxonomie-Menu)

  • Drupal
    • Module
    • Theming
    • Views
  • Webentwicklung
    • Composer
    • CSS/SCSS
    • Deployment
    • Drush
    • Git
    • HTML
    • JavaScript
    • PHP
    • SSH
    • SVG
    • VS Code
  • Datenbank
    • mySQL
  • Server
    • Apache
    • DNS
    • Domains
    • Plesk
    • SSL/TLS
  • System
    • Mac
    • Unix
    • Windows