Composer und Git auf Servern
Diese Seite ist für Systemadministratoren und Support-Mitarbeitende bei einem Hosting-Anbieter, die Exponential-Websites installieren und aktualisieren, und für Produktmanager, die entscheiden, ob Kunden Shell-Zugang mit Composer und Git bekommen. Sie beantwortet: wie der Code ankommt, was Composer tut, was eine einfache Kopie nicht tut, welcher Installationsweg zu welcher Art von Tarif passt und welche Befehle auf einer laufenden Website gefährlich sind. Die Quelle ist Kapitel 3 des Installationsbuchs, Den Code holen.
Inhalt
- Warum Composer Teil der Plattform ist
- Was ein Hoster bereitstellt
- Drei Wege, den Code zu holen
- Versionen und Tags
- Erweiterungen sind Pakete
- Sicher aktualisieren
- Updates aus der Administration
- Checkliste
- Verwandte Seiten
Warum Composer Teil der Plattform ist
Exponential wird mit Composer 2 installiert. Composer lädt die Bibliotheken des Kernels
herunter (die expcomponents, se7enxweb/expcomponents-*, den Fork der Zeta Components),
jede Erweiterung, die composer.json verlangt, und auf Wunsch Velocity. Ohne Composer fehlt vendor/, und die Website
kann nicht starten. Nach composer install führt das Skript legacy-scripts den Befehl
php bin/php/ezpgenerateautoloads.php aus, der die Klassenzuordnungen erzeugt
(Kapitel 2.7).
Was ein Hoster bereitstellt
| Element | Warum |
|---|---|
| Composer 2, aktuell | composer.json führt das Installer-Plugin unter config.allow-plugins, das Composer ab 2.2 liest |
| Das PHP der Website als PHP von Composer | Composer prüft php und ext-* gegen das PHP, mit dem es läuft; ein neueres PHP auf der Kommandozeile wählt Versionen, die das Web-PHP nicht ausführen kann |
| Ausgehendes HTTPS vom Server | Composer lädt von Packagist und GitHub |
| Git | für den empfohlenen Weg über Klone und für Updates von Klonen |
| Festplattenplatz für die Historie | ein Klon des Kernels mit seiner ganzen Historie ist etwa 370 MB groß; Klone von Erweiterungen kommen hinzu |
Auf Servern mit mehreren PHP-Versionen führen Sie Composer mit dem PHP der Website aus, zum Beispiel
/opt/plesk/php/8.5/bin/php /usr/local/bin/composer install (passen Sie beide Pfade an Ihren Server an).
Drei Wege, den Code zu holen
Aus Kapitel 3.2:
| Weg | Ergibt | Passt für |
|---|---|---|
A. git clone und composer install (empfohlen) | den Kernel und jede Erweiterung von se7enxweb als Git-Klone mit vollständiger Historie | Kunden, die Websites bauen und ändern; Entwicklung und Staging; Managed-Websites, die ein Hoster mit Git pflegt |
B. composer create-project se7enxweb/exponential | Release-Archive ohne Historie | Websites, die nur betrieben werden, schnelle Bewertungen, einfache Bereitstellung |
C. composer require se7enxweb/exponential in ein leeres Verzeichnis | den Kernel als Paket des eigenen Projekts des Kunden | Installationen, die als eigenes Projekt verwaltet werden |
Sagen Sie Composer für Weg A einmal pro Benutzerkonto, Pakete se7enxweb/* als Klone zu installieren:
composer config --global 'preferred-install.se7enxweb/*' source
git clone https://github.com/se7enxweb/exponential.git
cd exponential
composer installFür Weg B auf einem Produktivserver fügen Sie --no-dev hinzu, das die Testwerkzeuge weglässt:
composer create-project se7enxweb/exponential:~6.0.15 exponential --no-devHinweis Auf PHP 8.0 lässt sich keiner der Tags
v6.0.8bisv6.0.14installieren: Sie verlangen PHP 8.1. Nehmen Sie die Linie 6.0.15 (~6.0.15: den Tagv6.0.15, sobald er veröffentlicht ist, oder den Branchmain, der diese Linie trägt, alsdev-main). Die Tagsv6.0.13undv6.0.14brauchen auf PHP 8.1 bis 8.3 außerdem zusätzliche Schritte wegen ihrer PHPUnit-Anforderung (Kapitel 3.3).
Versionen und Tags
Exponential wird als Composer-Paket
se7enxweb/exponentialaus github.com/se7enxweb/exponential veröffentlicht. Release-Tags sindv6.0.0und später in der Linie 6.0;mainträgt die aktuelle Entwicklung.Ein Release-Tag ändert sich nie. Eine Korrektur kommt immer als nächste Version, sodass eine fest eingestellte Version jedes Mal dieselben Dateien liefert: die richtige Wahl für den Produktivbetrieb.
Sortieren Sie Versionen nach Version, nie nach Namen: Nach Namen sortiert steht
v6.0.10vorv6.0.8.git tag -l 'v*' --sort=version:refname | tail -5
Erweiterungen sind Pakete
Jede Erweiterung außer den vier, die im Repository des Kernels mitgeliefert werden (ezjscore, ezoe, ezformtoken,
expservices), ist ein Composer-Paket, das das Installer-Plugin in extension/<name> ablegt. composer.json
entscheidet also, welche Erweiterungen eine Installation hat und in welchen Versionen
(Kapitel 3.5).
Eine hinzuzufügen sind drei Schritte:
composer require se7enxweb/ezfind
php bin/php/ezpgenerateautoloads.php -e
php bin/php/ezcache.php --clear-tag=iniund sie in [ExtensionSettings] ActiveExtensions[] zu aktivieren (in der Administration unter Setup > Extensions
oder in settings/override/site.ini.append.php); starten Sie Velocity neu, wenn er die Website ausliefert.
Der Block suggest von composer.json listet optionale Erweiterungen auf, die ein Hoster als Zusatzleistungen anbieten
kann, darunter ezfind (Solr-Suche), sevenx_valkey_cache (Cache auf Valkey oder Redis), ezscriptmonitor und hcaptcha.
Sicher aktualisieren
Warnung Führen Sie
composer updateauf einer laufenden Website nicht leichtfertig aus. Es hebt jedes Paket auf die neueste Version, die seine Einschränkung erlaubt. Aktualisieren Sie gezielt ein Paket (composer update se7enxweb/<package>) und lesen Sie zuerst seine Release Notes.
- Klone, die Composer selbst angelegt hat, sind sicher: Composer weigert sich, einen Klon mit nicht committeten Änderungen oder nicht gepushten Commits zu aktualisieren (Wenn Composer sich weigert).
- Ein von Hand angelegter Klon an der Stelle eines Pakets, das Composer als Archiv installiert hat, ist nicht
sicher: Composer behandelt den Ordner weiter als Archiv und ersetzt ihn, samt Historie und Commits. Nutzen Sie
stattdessen
composer reinstall <package>, nachdem Siepreferred-installgesetzt haben. - Den Code zu bewegen ist die Hälfte eines Upgrades; die Update-Dateien der Datenbank sind die andere Hälfte (Kapitel 11).
- Sichern Sie vor jedem Update (Was gesichert werden muss).
Ein sicheres Update einer Website auf Basis von Klonen:
git fetch origin --tags
git merge v6.0.<n> # or origin/main
composer installUpdates aus der Administration
Die Erweiterung ezupdate, die composer.json verlangt, ist ein Paketmanager in der Administration (Setup >
Updates and packages) und auf der Kommandozeile. Aktualisieren und Installieren sind aus, bis sie eingeschaltet
werden, in settings/override/ezupdate.ini.append.php ([UpdateSettings] AllowUpdate, AllowInstall), weil
Composer vendor/ und jedes Paket, das es verwaltet, neu schreibt (ezupdate).
Für einen Hoster ist das eine Grundsatzentscheidung pro Tarif: aus lassen, wo der Hoster die Updates verwaltet, oder einschalten für Kunden, die ihre eigenen verwalten. Siehe Automatische Updates mit ezupdate.
Checkliste
- To do: Composer 2, aktuell, für den Benutzer der Website verfügbar.
- To do: Composer läuft mit der PHP-Version der Website.
- To do: Ausgehendes HTTPS zu Packagist und GitHub erlaubt.
- To do: Produktivinstallationen nutzen
--no-dev. - To do: Kunden-Websites fest auf Release-Tags eingestellt, es sei denn, sie folgen
mainabsichtlich. - To do: Kein leichtfertiges
composer updateauf laufenden Websites; ein Backup vor jedem Update. - To do: Eine Richtlinie pro Tarif für
AllowUpdateundAllowInstallvonezupdate.
Verwandte Seiten
- Kapitel 3: Den Code holen
- Mit Git entwickeln
- Kunden-Websites aktualisieren und Änderungen ausrollen
- Anleitung zu Erweiterungen
- 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.