Installation
Überblick
WebBlocks CMS unterstützt einen Paket-Consumer-Installationsablauf für frische Laravel-Anwendungen, einen browserbasierten Installationsassistenten für frische Wartungs-Repo-Installationen und einen manuellen Laravel-CLI-Installationsweg.
Beginnen Sie eine Neuinstallation damit, den WebBlocks-CMS-Quellcode auf Ihren Rechner zu holen. Führen Sie Composer aus, erstellen Sie .env, verwenden Sie Artisan und öffnen Sie den Browser-Installationsassistenten erst, nachdem der Quellcode lokal vorhanden ist.
Eine Installation gilt als abgeschlossen, wenn die Anwendung über eine funktionierende CMS-Basis verfügt:
- ein App-Key existiert
- die Datenbank ist erreichbar
- die erforderlichen Tabellen existieren
- die Kern-Seed-Daten existieren
- der erste aktive
super_adminexistiert - eine Abschlussmarkierung der Installation ist in
system_settingsgespeichert
Den Quellcode beziehen
Bevor Sie Installationsbefehle ausführen, stellen Sie sicher, dass das WebBlocks-CMS-Repository lokal vorhanden ist.
In ein neues Verzeichnis klonen:
git clone https://github.com/fklavyenet/webblocks-cms.git
cd webblocks-cms
git remote set-url --push origin DISABLED
In ein bereits angelegtes leeres Verzeichnis klonen:
git clone https://github.com/fklavyenet/webblocks-cms.git .
git remote set-url --push origin DISABLED
Sobald der Quellcode lokal vorhanden ist, fahren Sie mit einem der unten beschriebenen Neuinstallationswege fort.
WebBlocks-CMS-Installationen sind ausschließlich Update-Konsumenten. Sie dürfen CMS-Updates abrufen, ziehen oder herunterladen, aber keine Commits oder Tags in das kanonische CMS-Upstream-Repository zurückschieben. Führen Sie für bestehende lokale Installations-Klone einmalig git remote set-url --push origin DISABLED in der Arbeitskopie der Installation aus.
Paket-Consumer-Installation
Verwenden Sie diesen Ablauf, wenn WebBlocks CMS über Composer in eine frische Laravel-Anwendung installiert wird.
composer require fklavyenet/webblocks-cms
php artisan webblocks:install --name="Admin User" --email="admin@example.com" --password="secret-password"
Unterstützte Optionen:
--name=Anzeigename des ersten Super-Admins--email=E-Mail-Adresse des ersten Super-Admins--password=Passwort des ersten Super-Admins--site-name=Name der Standard-Site--site-handle=Handle der Standard-Site--repair-partialbenennt leere partielle CMS-Tabellen vor den Neuinstallations-Migrationen um--forceüberschreibt bei Bedarf paketeigene CMS-Assets oder veröffentlichte Konfigurationsdateien
Was webblocks:install tut:
- veröffentlicht
config/webblocks-cms.php, wenn die Host-App sie noch nicht hat - entfernt die unveränderte Laravel-Willkommensroute aus
routes/web.php, wenn dies sicher ist, mit einem zeitgestempelten Backup zuerst, damit öffentliche CMS-Routen/bedienen können - patcht
app/Models/User.phpmitWebBlocks\Cms\Auth\Concerns\HasWebBlocksCmsAccess - erstellt ein zeitgestempeltes Backup, bevor
User.phpgeändert wird - überspringt das Patchen, wenn das Trait bereits vorhanden ist
- schlägt mit einer klaren Meldung fehl, wenn
User.phpkeine erkennbareApp\Models\User extends Authenticatable-Klasse ist - führt den Neuinstallations-Migrationspfad des Pakets für saubere Consumer-Installationen aus
- erkennt partielle CMS-Schemata vor dem Ausführen der Neuinstallations-Migrationen und meldet vorhandene CMS-Tabellen, Zeilenanzahlen, zugehörige Migrationszeilen und bekannte Fremdschlüsselkonflikte
- repariert leere partielle CMS-Schemata nur, wenn
--repair-partialangegeben ist, indem leere CMS-Tabellen vor dem Fortfahren mit einem zeitgestempelten_before_cms_install_...-Suffix umbenannt werden - verweigert die automatische Reparatur, wenn eine partielle CMS-Tabelle Zeilen enthält
- überspringt das erneute Ausführen des frischen Schemas, wenn bereits CMS-Tabellen existieren
- erstellt Laravel-Unterstützungstabellen, ohne Migrationen der Host-Anwendung auszuführen; derzeit umfasst dies CMS-Passwort-Reset-Tokens sowie
sessions,cacheundcache_locks, wenn diese datenbankgestützten Treiber konfiguriert sind - führt das normale Laravel-Migrationsset der Host-Anwendung nicht als Teil der Paketinstallation aus und vermeidet so Konflikte mit der bereits erstellten CMS-kompatiblen
users-Tabelle - bereitet das Stammverzeichnis der
backups-Dateisystem-Disk vor, die von Backup / Restore verwendet wird - installiert paketeigene CMS-Assets nach
public/cms - erstellt
public/storage, wenn es fehlt und die Umgebung es erlaubt - seedet Sprachen (Locales), Sites, Slot-Typen, Seitenlayouts, Icons und Kern-Blocktypen idempotent
- speichert die installierte Version und die Abschlussmarkierung der Installation in
system_settings - erstellt den ersten aktiven
super_adminnur, wenn noch keiner existiert
Die Paket-Authentifizierung ist Laravel-nativ und erfordert weder Breeze, Jetstream, Laravel UI noch Fortify. Melden Sie sich nach der Installation unter /webadmin/login an, wenn die Auth-Routen des CMS-Pakets aktiv sind. CMS-eigene Auth-Views und Admin-Gast-Weiterleitungen verwenden Paket-Routennamen wie webblocks.auth.login und webblocks.auth.logout, sodass ein Host-Produkt seine eigene globale login-Route, zum Beispiel /quiztem/login, behalten kann, ohne CMS-Formularaktionen oder /webadmin-Weiterleitungen zu übernehmen.
Für die aktuelle v1.32.x-Paket-Consumer-Grenze bleibt App\Models\User der Host-Anwendung das Auth-Modell und das Patch-Ziel bei der Installation.
Wiederherstellung nach partieller Installation
Wenn webblocks:install nach einem fehlgeschlagenen oder unterbrochenen vorherigen Lauf stoppt, führen Sie es zunächst ohne Reparatur erneut aus und lesen Sie die Diagnose zur partiellen Installation. Leere CMS-Tabellen können explizit beiseitegeschoben werden:
php artisan webblocks:install --repair-partial --name="Admin User" --email="admin@example.com" --password="secret-password"
Der Reparaturmodus benennt nur leere CMS-eigene Kandidatentabellen um. Er löscht keine Tabellen, ändert nicht-leere Tabellen nicht automatisch und geht nicht davon aus, dass das CMS die Host-Anwendung besitzt.
Browser-Installationsassistent
Verwenden Sie den Browser-Assistenten für eine Neuinstallation.
Sobald der Quellcode lokal vorhanden ist, starten Sie mit:
composer install
cp .env.example .env
php artisan serve
Öffnen Sie dann http://127.0.0.1:8000/install.
Der Assistent deckt ab:
- Prüfungen der Umgebungsbereitschaft
- Datenbankkonfiguration und Verbindungsvalidierung
- Kern-CMS-Installation
- Erstellung des ersten
super_admin - Sperrung der Installation nach Abschluss
Hinweise:
- der Installer ist für Neuinstallationen gedacht
- wenn die Einrichtung unvollständig ist, kann der Assistent sicher erneut geöffnet und fortgesetzt werden
- nach Abschluss werden die Installationsrouten gesperrt und der normale Auth-/Admin-Ablauf übernimmt
- der Installer schreibt die gewählte Datenbankkonfiguration in
.env
Manuelle CLI-Installation
Verwenden Sie den CLI-Ablauf, wenn Sie für eine Neuinstallation einen standardmäßigen Laravel-Einrichtungsweg bevorzugen.
composer install
cp .env.example .env
php artisan key:generate
php artisan migrate
php artisan db:seed
php artisan storage:link
php artisan serve
Hinweise:
php artisan db:seedinstalliert die Kern-CMS-Kataloge und speichert die aktuelle App-Version als installierte Version für eine Neuinstallationphp artisan storage:linkist erforderlich, wenn die öffentliche Dateiauslieferungstorage/app/publicverwenden soll- Laufzeitverzeichnisse unter
storage/framework,storage/logsundbootstrap/cachewerden beim ersten Start automatisch erstellt - Backup / Restore speichert Archive auf der
backups-Dateisystem-Disk, standardmäßig unterstorage/app/backups. Der PHP-Laufzeitbenutzer sollte Eigentümer dieses Verzeichnisses sein oder eine Deployment-Gruppe mit Lese-/Schreibzugriff teilen; vermeiden Sie pauschale777-Modi.
Native lokale Installation
Für ein frisches Laravel-Projekt, das mit lokal installiertem PHP und Composer läuft:
composer require fklavyenet/webblocks-cms
php artisan webblocks:install --name="Admin User" --email="admin@example.com" --password="secret-password"
Öffnen Sie dann:
- öffentliche Site:
/ - Admin-Anmeldung:
/webadmin/login - Admin:
/webadmin
Sobald der Quellcode lokal vorhanden ist:
composer install
cp .env.example .env
php artisan key:generate
Hinweise:
- vertrauenswürdige lokale Entwicklung sollte
.test-Domains und HTTPS verwenden, mithttps://webblocks-cms.testals kanonischer CMS-Entwicklungs-URL php artisan servebleibt für schnelle, rein CLI-basierte Prüfungen nützlich, aber vertrauenswürdige Browser-Workflows sollten das indocs/native-local-development.mddokumentierte native Nginx/PHP-FPM-Setup verwenden- lokale Kontaktformular-E-Mail-Benachrichtigungen sollten einen lokalen SMTP-Catcher oder ein vertrauenswürdiges SMTP-Testkonto verwenden; die üblichen lokalen SMTP-Werte hängen vom installierten Tool ab
- Empfänger von Kontaktformular-Benachrichtigungen werden in dieser Reihenfolge aufgelöst:
recipient_emailauf Blockebene, Standard-Kontaktempfänger der aktuellen Site,CONTACT_RECIPIENT_EMAIL, dannMAIL_FROM_ADDRESSals letzter sicherer Fallback - Kontaktübermittlungen werden unabhängig von der Benachrichtigungszustellung gespeichert; eine öffentliche
Message sent-Antwort bestätigt also den Speichererfolg, selbst wenn der Admin-Bereich die Benachrichtigung später alsFailed,SkippedoderNot configuredanzeigt MAIL_MAILER=log,MAIL_MAILER=arrayundMAIL_MAILER=nullsind keine echte ausgehende Zustellung und werden für die Kontaktnachrichten-Benachrichtigung als nicht konfiguriert angezeigt- Kontaktformular-Blöcke rendern einen CMS-eigenen versteckten
.wb-form-check-Wrapper mitinert,aria-hidden="true", einem vom Renderer generiertenform_check_{token}-Feld,tabindex="-1"undautocomplete="off"; wenn dieses generierte Prüffeld ausgefüllt wird, gibt der Server dieselbe generische Erfolgsweiterleitung zurück und speichert keine Kontaktnachricht und versucht keine Benachrichtigung - Übermittlungen, die das generierte Prüffeld passieren, können dennoch durch konservative gespeicherte Signale wie kommerzielle Ansprache-Sprache, Linkdichte, wiederholte Übermittlungen von derselben IP oder ein Freemail-Verkaufsanschreiben mit generischem Betreff als
spameingestuft werden; dieser Status ist eine dauerhafte Admin-Klassifizierung und ist vom E-Mail-Benachrichtigungsstatus getrennt - wenn die Benachrichtigungszustellung fehlschlägt, können Admins die gespeicherte Nachricht unter
Admin -> Contact Messageseinsehen, um den kompakten Fehlerstatus in der Liste und die gespeicherten Fehlerdetails auf dem Nachrichtendetailbildschirm zu sehen
Öffnen Sie dann:
- öffentliche Site:
https://webblocks-cms.test - Admin:
https://webblocks-cms.test/webadmin - Installer bei einer Neuinstallation:
https://webblocks-cms.test/install
Schließen Sie die Neuinstallation im Browser-Assistenten ab, nachdem diese Einrichtungsschritte erledigt sind.
Zugriff auf den Installationsassistenten
- Neuinstallationen leiten automatisch zu
/installweiter - Sie können den Assistenten auch manuell unter
/installöffnen - Sie können
/install/coreöffnen, um direkt zum Kern-Installationsschritt zu springen, wenn frühere Anforderungen bereits erfüllt sind - der Assistent kann Schritte automatisch weiterschalten, sobald Anforderungen erfüllt sind
- das Öffnen von
/und/installin mehreren Browser-Tabs kann unterschiedliche Assistentenschritte anzeigen; das ist zu erwarten, weil der Installer den Fortschritt verfolgt und entsprechend weiterleitet
Erstellung des ersten Super-Admins
Der erste super_admin ist für eine abgeschlossene Installation erforderlich.
- erstellen Sie im Browser-Assistenten den ersten Admin im letzten Einrichtungsschritt
- geben Sie im Paket-Consumer-CLI-Ablauf
--name,--emailund--passwordanwebblocks:installweiter - stellen Sie bei einer manuellen Installation sicher, dass mindestens ein aktives
super_admin-Konto existiert, bevor das CMS als vollständig installiert gilt
super_admin ist die Rolle auf Installationsebene, die auf Benutzer, Sites, Sprachen (Locales), Einstellungen, Updates, Backups, Export/Import und alle Site-Inhalte zugreifen kann.
Allgemeine Einrichtungshinweise
- der Installer wird nach Abschluss gesperrt
/webadminist der kanonische Einstiegspunkt in den CMS-Admin-Bereich- Paket-Consumer-Installationen können sich über
/webadmin/loginanmelden; co-installierte Apps können ihr host-eigenes/loginbehalten /webadmin/dashboardleitet zu/webadminweiter- CMS-Assets bleiben unter
/cms, zum Beispiel/cms/css,/cms/jsund/cms/brand - das paketeigene
/webadmin/loginverwendet Paket-Blade-Views, die Gast-Auth-Shell der WebBlocks UI, gepinnte WebBlocks-UI-Assets,/cms/css/guest.cssund CMS-Produkt-Markenassets aus/cms/brand, einschließlich der Favicon-/Browser-Tab-Varianten normal, dunkle Oberfläche, auf Akzentfarbe/invers und hoher Kontrast /cmsist für CMS-eigene statische öffentliche Assets reserviert und darf nicht als Präfix, Alias oder Weiterleitung für CMS-Admin-Routen verwendet werden/admingehört nicht dem CMS und darf nicht als CMS-Admin-Route wiederhergestellt werden- neue Seiten beginnen als
draft - wenn Funktionen auf Installationsebene wie Revisionen, Backups oder Updates fehlende Tabellen melden, führen Sie
php artisan migrateaus
Die Trennung von /webadmin und /cms vermeidet die Nginx-try_files-Kollision, bei der /cms/ als physisches public/cms/-Asset-Verzeichnis aufgelöst werden kann, bevor Laravel eine Route verarbeitet. Lösen Sie den Admin-Zugriff nicht durch Hinzufügen einer public/cms/index.php-Übergabe; diese Front-Controller-Brücke muss in den öffentlichen Assets von Root und Paket abwesend bleiben.
E-Mail- und Kontaktformular-Bereitschaft
Konfigurieren Sie den Laravel-Mailversand, bevor Sie eine öffentliche Kontaktseite veröffentlichen. Ein typisches SMTP-.env-Setup sieht so aus:
MAIL_MAILER=smtp
MAIL_HOST=smtp.example.com
MAIL_PORT=587
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=no-reply@example.com
MAIL_FROM_NAME="Site Name"
CONTACT_RECIPIENT_EMAIL=contact@example.com
MAIL_* steuert den Laravel-Mailversand für Benachrichtigungsversuche des Kontaktformulars. MAIL_FROM_ADDRESS ist die sichere Fallback-Absenderadresse und zugleich der letzte sichere Empfänger-Fallback des Kontaktformulars, wenn kein spezifischerer Empfänger konfiguriert ist. CONTACT_RECIPIENT_EMAIL ist optional und dient als Fallback-Empfänger auf Umgebungsebene. Bevorzugen Sie, wenn verfügbar, die Konfiguration des Kontakt-Empfängers auf Site-Ebene unter Site -> Edit -> Contact, damit das Kontakt-Routing bei der Site liegt und nicht nur in .env.
Leeren Sie nach dem Ändern der .env-Maileinstellungen in Produktions- oder Paketinstallationen die zwischengespeicherte Konfiguration, wenn die Installation Config-Caching verwendet:
php artisan optimize:clear
Kontaktformular-Benachrichtigungen lösen Empfänger in dieser Reihenfolge auf:
- Kontaktformular-Block
recipient_email - Standard-Kontaktempfänger der Site aus
Site -> Edit -> Contact .envCONTACT_RECIPIENT_EMAIL- sicherer
MAIL_FROM_ADDRESS-Fallback
Angenommene echte Kontaktformular-Übermittlungen werden gespeichert, bevor eine E-Mail-Benachrichtigung versucht wird. Ein Benachrichtigungsfehler bedeutet nicht, dass die öffentliche Formularübermittlung fehlgeschlagen ist. Admins sollten /webadmin/contact-messages auf gespeicherte Nachrichten, den Benachrichtigungsstatus und sichere Fehlerdetails prüfen. Öffentliche Besucher sollten nur normales Erfolgs- oder Validierungsfeedback sehen, keine Mail-Diagnosen.
Sent bedeutet, dass das CMS die Benachrichtigung ohne Exception an den konfigurierten Mail-Transport übergeben hat; es garantiert keine Zustellung in den Posteingang. Skipped oder Not configured bedeutet, dass kein echter Benachrichtigungsversand versucht wurde.
Verwenden Sie für Kontaktseiten den nativen contact_form-Block. Ersetzen Sie ihn nicht durch Trusted HTML, rohes <form>-Markup oder mailto:-Fallbacks. Der CMS-Renderer generiert das versteckte Anti-Spam-Prüffeld automatisch; legen Sie es nicht manuell an. Das alte website-Honeypot-Feld ist nicht mehr Teil des öffentlichen Vertrags.
Praktischer Kontaktformular-Smoke-Test:
- Veröffentlichen Sie eine Seite mit dem nativen
contact_form-Block oder zeigen Sie sie in der Vorschau an. - Senden Sie eine Testnachricht mit Name, E-Mail, Betreff und Nachricht.
- Öffnen Sie
/webadmin/contact-messages. - Bestätigen Sie, dass die Nachricht gespeichert wurde.
- Prüfen Sie den Benachrichtigungsstatus.
- Wenn die E-Mail nicht angekommen ist, sehen Sie sich die sicheren Fehlerdetails an und führen Sie die Mail-Diagnose aus.
Diagnosebefehle:
php artisan contact:mail-diagnose
php artisan contact:mail-diagnose --block=ID
php artisan contact:mail-diagnose --send-test=you@example.com
Der Diagnosebefehl darf keine Passwörter, Tokens oder Mail-Geheimnisse ausgeben. Verwenden Sie --block=ID, um die Empfänger-Fallback-Kette für einen einzelnen Kontaktformular-Block zu untersuchen. Verwenden Sie --send-test= nur für eine kontrollierte SMTP-Sendeprüfung an eine bewusst gewählte Testadresse.
Nächste Schritte nach der Installation
- Melden Sie sich unter
/webadminan. - Überprüfen Sie Ihre Site- und Sprachkonfiguration (Locale).
- Konfigurieren Sie die Site-Identität und die Domains.
- Konfigurieren Sie die Laravel-Maileinstellungen oder freigegebene System-Maileinstellungen.
- Konfigurieren Sie einen Kontaktformular-Empfänger, vorzugsweise unter
Site -> Edit -> Contact. - Führen Sie
php artisan contact:mail-diagnoseaus. - Senden Sie ein natives Test-Kontaktformular und bestätigen Sie, dass es eine Kontaktnachricht speichert.
- Überprüfen Sie den E-Mail-Benachrichtigungsstatus für diese Testnachricht.
- Erstellen Sie Ihre erste Seite.
- Fügen Sie Medien, Navigation und Blöcke hinzu.
- Veröffentlichen Sie Inhalte über den redaktionellen Workflow.