Zum Inhalt

Installation

Die Installation erledigt ein einziges Skript, installer_de_patch.sh. Es erkennt selbst, ob es ein neues Drupal CMS anlegen oder ein bestehendes Projekt vorbereiten soll.

Sie brauchen dafür eine Kommandozeile mit PHP, Composer, git und curl, also dieselbe Umgebung wie für Drupal CMS selbst.

Neues Drupal CMS auf Deutsch

Führen Sie das Skript in einem leeren Verzeichnis aus:

bash curl -sSL https://git.drupalcode.org/project/dcgi/-/raw/1.0.x/installer_de_patch.sh | bash

Das Skript lädt Drupal CMS per composer create-project in den Unterordner cms/ und bereitet den Installer vor. Einen anderen Ordnernamen geben Sie so an (bei curl | bash ist dafür die Schreibweise -s -- nötig):

bash curl -sSL https://git.drupalcode.org/project/dcgi/-/raw/1.0.x/installer_de_patch.sh | bash -s -- drupalcms

Rufen Sie danach die Website im Browser auf, wählen Sie Deutsch als Sprache und folgen Sie dem Installer.

Während der Installation nicht neu laden

Laden Sie die Seite nicht neu, solange die Installation läuft. Drupal kann sonst einen halbfertigen Zustand zwischenspeichern, und die fertige Website zeigt einen Fehler 500. drush cr behebt das.

Bestehendes Drupal-CMS-Projekt

Führen Sie das Skript im Wurzelverzeichnis Ihres Projekts aus, also dort, wo composer.json und web/ liegen, nicht im Ordner web/ selbst:

bash curl -sSL https://git.drupalcode.org/project/dcgi/-/raw/1.0.x/installer_de_patch.sh | bash

Das Skript erkennt die vorhandene Installation an web/profiles/contrib/drupal_cms_installer und bindet den deutschen Installer direkt dort ein.

Ist die Website schon fertig installiert, hat das keine sichtbare Wirkung: Der Installer greift nur bei einem (erneuten) Aufruf von core/install.php. Ob eine Website installiert ist, prüft das Skript mit drush status. Wurde die Datenbank später geleert (etwa mit drush sql:drop), spielt es den Installer wieder ein.

Nach der Installation aufräumen

Führen Sie das Skript ein zweites Mal im selben Verzeichnis aus, sobald die Installation abgeschlossen ist. Es erkennt das selbst, entfernt den deutschen Installer wieder und setzt den Drupal-CMS-Installer auf den Originalzustand zurück. Auf der fertigen Website wird er ohnehin nicht mehr gebraucht.

Gut zu wissen

Kein Eintrag in composer.json. Der Installer wird nicht per composer require eingebunden, sondern per git clone nach web/profiles/contrib/drupal_cms_installer_de gelegt. Dort findet Drupal ihn automatisch. composer.json und composer.lock bleiben dadurch unverändert. Nur die Zusatzmodule von drupal.org landen regulär in composer.json.

Nach composer update erneut ausführen. Composer führt die Skripte von Paketen nicht selbst aus. Ein Update von Drupal CMS kann die Anpassungen am Installer deshalb überschreiben. Führen Sie installer_de_patch.sh dann einfach noch einmal aus. Jede Anpassung erkennt, ob sie schon angewendet ist.

PHP-Speicher. Der Web-Installer führt jeden Installationsschritt innerhalb des memory_limit von PHP aus. Die großen Vorlagen (Summit, Varbase, The Rightup, Educare, Horizon Aid) brauchen mehr als die übliche Voreinstellung von 128 MB; damit bricht der Installer mittendrin mit einem „AJAX HTTP error“ ab. Setzen Sie memory_limit für PHP-FPM oder Apache auf mindestens 512M und starten Sie PHP neu. Installationen mit Drush sind nicht betroffen, weil PHP auf der Kommandozeile kein Limit hat.

Twig 3.30. Twig 3.30.0 (erschienen am 25.09.2026) ist mit Drupal Core 11.4.7 nicht verträglich: Schon die erste Seite der Installation bricht ab mit EscaperRuntime::escape(): Argument #4 ($autoescape) must be of type bool, null given. Drupal Core 11.4.8 hat das behoben. Nur bei älterem Core begrenzt das Skript Twig deshalb automatisch auf eine passende Version. Nach einem Update auf 11.4.8 entfernen Sie die Begrenzung mit composer remove twig/twig.

Einen Branch oder lokalen Klon testen. Die Quelle des Installers lässt sich überschreiben:

bash INSTALLER_DE_REPO=file:///pfad/zum/klon INSTALLER_DE_BRANCH=mein-branch bash installer_de_patch.sh