Lektion 1.2: Eine Entwicklungsinstallation mit Git
Entwickler arbeiten auf einer eigenen Installation, in der sie etwas kaputt machen dürfen. In dieser Lektion baut sich jede Person eine solche Installation: den Kernel und jede Erweiterung als Git-Klone, eine Datenbank in einer einzigen SQLite-Datei und einen Webserver, der mit einem Befehl startet. Alles Weitere im Kurs läuft auf dieser Installation.
Hinweis Der Klon und
composer installladen mehrere hundert Megabyte herunter. In einem Schulungsraum mit langsamer Verbindung bereiten Sie vorher auf jedem Rechner eine Kopie eines fertigen Klons vor und beginnen bei Schritt 5.
Auf einen Blick
| Kurs | Entwickler |
| Modul | Modul 1: Die Entwicklungsinstallation |
| Dauer | 60 Minuten (15 Präsentation, 45 Übung) |
| Niveau | Einsteiger |
| Zielgruppe | PHP-Entwickler, die neu bei Exponential sind |
| Voraussetzungen | Lektion 1.1; PHP, Composer 2 und Git 2.28 oder neuer auf dem eigenen Rechner |
Lernziele
Nach dieser Lektion können die Teilnehmenden:
- Composer so einstellen, dass die Pakete
se7enxweb/*als Git-Klone installiert werden; - den Kernel klonen, einen eigenen Branch beginnen und
composer installausführen; - eine Website mit
php bin/php/console exp:install --applyinstallieren und das erzeugte Administratorpasswort finden; - den eingebauten Webserver mit
exp:velocity startstarten und sich an der Administration anmelden; - erklären, warum die Entwicklungsinstallation nie Einstellungen oder Daten mit einer Live-Website teilt.
Hinweise für Trainer
So präsentieren Sie es
Quellen: Mit Git entwickeln, Eine Entwicklungsinstallation einrichten und 7. Die Installation über die Konsole.
- Warum Klone (4 Minuten). Ein Release-Archiv enthält die Dateien einer Version; ein Klon enthält die
Geschichte.
git log,git blameundgit bisectbeantworten „Warum steht diese Zeile hier?“ und „Welche Änderung hat es kaputt gemacht?“, und ein Branch hält Ihre eigenen Änderungen fest. Zeigen Sie die Tabelle in Mit Git entwickeln. - Die eine Composer-Einstellung (2 Minuten).
composer config --global 'preferred-install.se7enxweb/*' sourcemacht jedes Paketse7enxweb/*zu einem Klon und alles andere zu einem schnellen Archiv. exp:install(5 Minuten). Ohne Optionen installiert es das Seitenpaketsevenx_multisiteauf SQLite ineng-USund endet mit einer Zusammenfassung: Adresse der Website, Anmeldung an der Administration, Benutzeradminund ein erzeugtes Passwort, das auch invar/log/initial-admin-passwordgeschrieben wird (nur für den Eigentümer lesbar).- Ausliefern (4 Minuten).
settings/velocity.iniwird mit[ServerSettings] Engine=phpausgeliefert, dem eingebauten Server von PHP mit dem Routerbin/php/velocity-router.php;[PHPServerSettings] Port=8087.
Häufige Fragen
„HEAD detached“ in einer Erweiterung: Ist etwas kaputt? Nein. Composer checkt genau den Release-Tag aus, den
composer.json verlangt. Beginnen Sie einen Branch, bevor Sie etwas ändern.
Brauche ich ein GitHub-Konto? Nur um Änderungen zurückzuschicken (Lektion 13.3). Für die Installation braucht man keins.
Kann ich MySQL statt SQLite verwenden? Ja: exp:install nimmt Datenbankoptionen an, aufgeführt in
7.3 Optionen. SQLite braucht keinen Datenbankserver, was einen
Schulungsraum einfach hält.
Warum ./console? Viele Entwickler legen einen Link an, ln -s bin/php/console console. Er gehört nicht zu den
ausgelieferten Dateien; dieser Kurs schreibt php bin/php/console vollständig aus.
Stolperfallen
- Alles als root ausführen. Befehle verweigern die Ausführung als root, solange
--allow-root-usernicht angegeben ist. Lassen Sie die Teilnehmenden als eigener Benutzer arbeiten. exp:installüber eine bestehende Installation. Ohne--forceverweigert es die Arbeit, und seine Voreinstellung--db-action=removeleert die angegebene Datenbank. Richten Sie es nie auf eine Datenbank, auf die es ankommt.- Ein belegter Port. Ist Port 8087 belegt, schlägt der Start fehl; der Trainer ändert
Portin einem Einstellungs-Override oder hält den anderen Server an.
Praktische Übung
Alle Teilnehmenden arbeiten auf ihrem eigenen Rechner (oder in ihrem eigenen Ordner auf einem gemeinsamen Schulungsserver).
Weisen Sie Composer an, für die Pakete des Projekts Klone zu bevorzugen:
composer config --global 'preferred-install.se7enxweb/*' source composer config --global preferred-installKlonen Sie den Kernel und beginnen Sie Ihren Branch:
git clone https://github.com/se7enxweb/exponential.git exponential cd exponential git switch -c my-devInstallieren Sie die Pakete:
composer install.Prüfen Sie, dass die Erweiterungen Klone sind:
ls -d extension/*/.git | wc -l.Sehen Sie sich die Konfiguration an, ohne etwas zu schreiben:
php bin/php/console exp:install --print --url=http://127.0.0.1:8087 --title="Developer course"Installieren Sie:
php bin/php/console exp:install --apply --url=http://127.0.0.1:8087 --title="Developer course".Kopieren Sie das Passwort aus der Zusammenfassung an einen sicheren Ort.
Starten Sie den Webserver:
php bin/php/console exp:velocity start.Öffnen Sie die Anmeldeadresse der Administration aus der Zusammenfassung und melden Sie sich als
adminan.Ändern Sie das Administratorpasswort in der Administration und entfernen Sie dann
var/log/initial-admin-password.Führen Sie
git statusim Wurzelverzeichnis der Installation aus und lesen Sie, welche Dateien die Installation angelegt hat.
Erwartetes Ergebnis
- Schritt 4 gibt eine Zahl größer als null aus.
- Schritt 6 endet mit dem Kasten „Exponential is installed“, der die Adressen der Website, der Administration und des Editors auflistet.
- Schritt 9 zeigt das Dashboard der Administration.
- Schritt 11 listet Dateien wie
settings/override/als nicht versioniert: die eigenen Einstellungen der Installation, die nie in ein öffentliches Repository gepusht werden dürfen, weil sie hostspezifische Werte enthalten. - Der Trainer prüft das, indem er alle Teilnehmenden bittet, das Dashboard und die Ausgabe von
git branch(* my-dev) zu zeigen.
Quiz
- Was ändert
composer config --global 'preferred-install.se7enxweb/*' source? - Welche Datenbank verwendet
exp:install, wenn keine Option etwas anderes angibt? A. MySQL B. PostgreSQL C. SQLite D. MongoDB - Wohin wird das erzeugte Administratorpasswort außer in die Zusammenfassung geschrieben?
- Richtig oder falsch:
exp:installinstalliert ohne Rückfrage über eine bestehende Installation. - Warum darf
settings/override/nie von der Live-Website in die Entwicklungsinstallation kopiert werden?
Antworten
- Composer installiert jedes Paket
se7enxweb/*als Git-Klon und alles andere als Archiv. - C. SQLite, in einer einzigen Datei unterhalb von
var/storage/sqlite3/. - In
var/log/initial-admin-password, nur für den Eigentümer lesbar; löschen Sie die Datei, nachdem Sie das Passwort geändert haben. - Falsch. Ohne
--forceverweigert es die Arbeit. - Es enthält Datenbankpasswörter und hostspezifische Werte; jeder Rechner behält seine eigenen.
Weiterführende Literatur
- Mit Git entwickeln: Klone, Branches, auf dem neuesten Stand bleiben.
- Eine Entwicklungsinstallation einrichten: dieselben Schritte mit Debug-Einstellungen.
- 7. Die Installation über die Konsole: jede Option von
exp:install. - 8. Die Website ausliefern: Velocity, Apache, nginx und FrankenPHP.
Verwandte Seiten
- Modul 1: Die Entwicklungsinstallation
- Entwickler: Kursüberblick
- Trainer: hier beginnen
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
Werden Sie Exponential-Partner
Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.