Laravel auf cPanel und VPS installieren: Schritt für Schritt

Wie installieren Sie Laravel auf cPanel?
Laravel auf cPanel zu installieren heißt, die Projektdateien in Ihr Hostingkonto zu laden, Abhängigkeiten mit Composer zu installieren, eine .env Datei mit Produktionswerten zu füllen und das Hauptverzeichnis der Domain auf den Ordner public des Projekts zu legen. Danach führen Sie die Migrationen aus, korrigieren die Rechte und tragen eine einzige Cronjob Zeile für geplante Aufgaben ein.
Wir sind ein Team für digitales Marketing und Web, kein Hostinganbieter. Deshalb stützen wir jeden Befehl und jeden Einstellungsnamen in diesem Leitfaden auf die offizielle Dokumentation von Laravel, Composer und cPanel. Von eigenem Serverbetrieb berichten wir also nicht.
Für wen ist dieser Leitfaden gedacht? Wenn Sie eine Website oder einen Onlineshop besitzen, verstehen Sie danach besser, was Ihre Entwickler und Ihr Hostinganbieter tun. Wenn Sie als Entwickler einen eigenen VPS oder ein cPanel Konto verwalten, können Sie die Befehle Schritt für Schritt ausführen. Versionsnummern und Standardwerte nennen wir hier bewusst nicht, denn sie ändern sich mit Ihrer Laravel Version.
Am Ende behandeln wir außerdem häufige Fehler und die Fälle, in denen Sie die Arbeit besser Ihrem Hoster überlassen. Eine gute Entscheidung besteht zum Teil darin, den richtigen Befehl zu kennen. Zum anderen Teil müssen Sie wissen, wann Sie ihn nicht eingeben. Prüfen Sie bei der ersten Installation nach jedem Schritt das Ergebnis.
Was sollten Sie vor dem Start prüfen?
Die offizielle Dokumentation zum Deployment von Laravel nennt die minimale PHP Version und die nötigen Erweiterungen. Die aktuelle Fassung dieser Seite verlangt PHP 8.3 oder höher. Allerdings ändert sich diese Zahl zwischen den Laravel Versionen. Prüfen Sie deshalb die php Zeile in der composer.json Ihres Projekts und die Dokumentationsseite zu Ihrer eigenen Version.
Wie die PHP Auswahl in cPanel heißt, hängt von Ihrem Hoster ab. Viele Anbieter zeigen einen Bildschirm namens MultiPHP Manager oder Select PHP Version. Nach der Wahl der Version bestätigen Sie, dass die Erweiterungen aktiv sind. Die Dokumentation führt diese Erweiterungen auf:
- Ctype, cURL, DOM und Fileinfo.
- Filter, Hash, Mbstring und OpenSSL.
- PCRE, PDO, Session, Tokenizer und XML.
Außerdem brauchen Sie den PDO Treiber für Ihre Datenbank. Zum Beispiel muss pdo_mysql aktiv sein, wenn Sie MySQL nutzen. Schließlich klären Sie, ob Sie ein Terminal nutzen dürfen. Composer und php artisan sind Kommandozeilenwerkzeuge, daher brauchen sie ein Terminal. Manche Tarife für Shared Hosting halten es gesperrt.
Soll man Laravel auf cPanel, einem VPS oder einer verwalteten Plattform betreiben?
Die Antwort hängt davon ab, wie viel Kontrolle Sie wollen und wie viel Verantwortung Sie tragen können. Shared Hosting mit cPanel ist günstig und einfach. Allerdings ist es für dauerhaft laufende Prozesse wie Queue Worker begrenzt. Ein VPS gibt Ihnen volle Kontrolle, doch Sicherheit und Updates liegen dann bei Ihnen.
Die Dokumentation von Laravel nennt zwei verwaltete Optionen. Laravel Cloud ist eine vollständig verwaltete Plattform für das Deployment. Forge ist ein Verwaltungswerkzeug für VPS, gedacht für Teams mit eigenen Servern, die nicht jeden Dienst von Hand installieren wollen. Die folgende Tabelle gibt einen groben Rahmen.
| Kriterium | Shared Hosting mit cPanel | VPS | Verwaltete Plattform |
|---|---|---|---|
| Kontrolle | Begrenzt durch die Regeln des Anbieters | Volle Kontrolle | So viel, wie die Plattform bietet |
| Terminalzugriff | Je nach Anbieter | Immer vorhanden | Oberfläche und Werkzeuge der Plattform |
| Queue Worker | Meist ein Umweg über Cronjobs | Dauerprozess mit Supervisor | Übernimmt die Plattform |
| Sicherheitspflichten | Größtenteils beim Anbieter | Bei Ihnen | Größtenteils bei der Plattform |
| Geeignet für | Kleine und mittlere Websites | Anwendungen mit Sonderbedarf | Wachsende Produkte |
Die Marketing und Performance Seite dieser Wahl haben wir in unserem Leitfaden Webhosting auswählen behandelt. Hier erklären wir nur, was für Laravel besonders ist. Für eine kleine Firmenseite oder einen Shop in der Startphase reicht Laravel auf cPanel oft aus. Wächst der Traffic, geht es dann um einen VPS oder eine verwaltete Plattform.
Wie bringen Sie die Projektdateien auf den Server?
Es gibt drei gängige Wege: per Git abrufen, eine Zip Datei im Dateimanager hochladen oder die Dateien per SFTP senden. Git ist am saubersten, weil Sie immer wissen, welche Version produktiv läuft. Falls Git für Sie neu ist, erklärt unsere Anleitung zu Git und GitHub die wichtigsten Befehle.
Dann gelten für jeden Weg diese Regeln:
- Kopieren Sie Ihre lokale .env Datei nicht auf den Server. Für die Produktion bereiten Sie eine eigene vor.
- Laden Sie node_modules nicht hoch. Wenn Sie das Frontend nicht auf dem Server bauen, erzeugen Sie die Ausgabedateien lokal und laden sie hoch.
- Erzeugen Sie den Ordner vendor möglichst auf dem Server mit Composer. Ohne Terminal müssen Sie ihn lokal bauen und hochladen.
- Legen Sie die Anwendung außerhalb des öffentlichen Ordners Ihrer Domain ab. Den Grund erklären wir im Abschnitt zum Ordner public.
Kurz gesagt hält das sicherste Layout den Anwendungsordner privat und stellt nur den Inhalt von public ins Web.
Es hilft außerdem, die Version vor dem Hochladen zu markieren. Geht etwas schief, wissen Sie, zu welcher Version Sie zurückkehren. Planen Sie den Upload zudem für eine ruhige Stunde. Bei einem Shop kann ein Deployment zur Hauptverkehrszeit Bestellungen kosten.
Wie installieren Sie die Abhängigkeiten mit Composer auf dem Server?
Sie wechseln in den Projektordner und führen den Befehl install von Composer mit Produktionsoptionen aus. Laut der offiziellen Befehlsdokumentation von Composer nutzt install die exakten Versionen aus der Datei composer.lock, sofern sie existiert. Also landen genau die Paketversionen in der Produktion, die Sie lokal getestet haben.
cd /path-to-your-project
composer install --no-dev --optimize-autoloader
Die Option --no-dev überspringt Pakete aus require-dev. Test und Debug Werkzeuge bleiben so aus der Produktion draußen. Die Option --optimize-autoloader erzeugt zusätzlich eine Classmap für schnelleres Laden der Klassen, und die Dokumentation empfiehlt sie für die Produktion.
Führen Sie auf dem Live Server nie composer update aus, denn es verändert Ihre Lock Datei. Dann kann ein Update Versionen holen, die Sie nie getestet haben. Scheitert Composer im Shared Hosting an Speicher oder Zeitlimits, bauen Sie den Ordner vendor lokal mit demselben Befehl und laden ihn als Notlösung hoch.
Achten Sie außerdem darauf, dass Ihre lokale PHP Version zu der des Servers passt. Weichen sie ab, lehnt Composer auf dem Server womöglich Pakete ab, die lokal liefen. Die Fehlermeldung nennt meist das Paket und die gewünschte Version. Diese Meldung zu lesen und die Versionen anzugleichen ist viel sicherer, als die Installation zu erzwingen.
Wie richten Sie die .env Datei und den APP_KEY ein?
Eine frische Laravel Installation enthält die Datei .env.example, und das Installationsprogramm kopiert sie nach .env. Auf dem Server folgen Sie derselben Logik. Sie kopieren die Beispieldatei, füllen sie mit Produktionswerten und erzeugen anschließend den Anwendungsschlüssel.
cp .env.example .env
php artisan key:generate
Die folgenden Werte sind Beispiele. Ersetzen Sie sie durch Ihre eigenen:
APP_ENV=production
APP_DEBUG=false
APP_URL=https://example.com
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_DATABASE=konto_laravel
DB_USERNAME=konto_app
DB_PASSWORD=starkes-passwort-eintragen
Die Dokumentation zur Konfiguration von Laravel ist eindeutig: In der Produktion muss APP_DEBUG immer false sein. Bleibt der Wert true, können Fehlerseiten sensible Konfigurationswerte an Besucher zeigen. Halten Sie die .env Datei außerdem aus der Versionsverwaltung heraus, denn wer das Repository erreicht, bekäme Ihre Geheimnisse.
Laravel nutzt APP_KEY für die Verschlüsselung. Ändern Sie ihn später in der Produktion, können Daten, die mit dem alten Schlüssel geschützt sind, unlesbar werden. Bewahren Sie den Schlüssel daher in einem Passwortmanager auf.
Wie legen Sie die Datenbank an und führen die Migrationen aus?
In cPanel erstellen Sie unter MySQL Databases oder im MySQL Database Wizard eine neue Datenbank und einen Benutzer. Vergessen Sie nicht, den Benutzer mit allen Rechten zur Datenbank hinzuzufügen. cPanel setzt Ihren Kontonamen als Präfix davor. Daher brauchen DB_DATABASE und DB_USERNAME in der .env Datei die Namen mit Präfix.
Nachdem Sie die Zugangsdaten in die .env Datei eingetragen haben, erzeugen Sie die Tabellen mit Migrationen:
php artisan migrate --force
In der Produktion fragt Laravel vor den Migrationen nach einer Bestätigung. Die Option --force überspringt diese Abfrage, und Sie brauchen sie bei automatischen Deployments. Allerdings können Migrationen die Tabellenstruktur verändern. Haben Sie bereits Live Daten, erstellen Sie vorher ein Backup. Unsere Backup Strategie für Websites beschreibt eine sinnvolle Routine.
Wenn Sie Abfragen und Datenbankdesign besser verstehen möchten, ist unser Beitrag zu SQL Abfrageszenarien eine gute Ergänzung.
Wie setzen Sie die Rechte für storage und bootstrap/cache?
Laut der Dokumentation von Laravel muss die Anwendung in die Verzeichnisse bootstrap/cache und storage schreiben können. Das heißt, der Besitzer des Webserver Prozesses braucht dort Schreibrechte. In den meisten cPanel Umgebungen läuft PHP als Benutzer Ihres Kontos. Allerdings kann das je nach Anbieter abweichen.
chmod -R ug+rwx storage bootstrap/cache
Dann gibt dieser Befehl Besitzer und Gruppe Lese, Schreib und Ausführrechte. Geben Sie diesen Ordnern keinen vollen öffentlichen Zugriff (777). Andere Konten auf demselben Server oder eine Sicherheitslücke könnten diese Berechtigung missbrauchen.
Um hochgeladene Dateien über die öffentliche Disk auszuliefern, führen Sie den Befehl storage:link aus:
php artisan storage:link
Manche Shared Hosts schalten symbolische Links ab. Dann liefern Ihre Bilder den Fehler 404. Fragen Sie in diesem Fall also Ihren Anbieter oder ändern Sie die Art der Auslieferung.
Uploads von Nutzern sind ein eigenes Thema. Prüfen Sie Typ und Größe jeder hochgeladenen Datei, denn ungeprüfte Uploads sind ein ernstes Sicherheitsrisiko. Speichern Sie hochgeladene Dokumente nicht in Ordnern, in denen Code laufen kann. Die Prüfregeln schreiben Sie im Anwendungscode, und eine Servereinstellung ersetzt sie nicht.
Wie legen Sie die Domain auf den Ordner public?
Die Dokumentation zum Deployment verlangt, dass der Webserver alle Anfragen an die Datei public/index.php der Anwendung leitet. Die Warnung ist ausdrücklich: Verschieben Sie index.php niemals ins Projektstammverzeichnis. Liefern Sie die Anwendung aus dem Stammverzeichnis aus, liegen viele sensible Konfigurationsdateien offen im Internet.
In cPanel erledigen Sie das auf dem Bildschirm Domains. Laut der Dokumentation von cPanel klicken Sie neben einer bestehenden Domain auf Manage, um deren Document Root zu ändern. Danach tragen Sie den Pfad zum Ordner public Ihres Projekts in das Feld für das Document Root ein. Der Pfad besteht zum Beispiel aus Ihrem Kontoordner, dem Anwendungsordner und dann public.
Bei Subdomains und Addon Domains klappt das meist ohne Probleme. Bei der Hauptdomain halten manche Anbieter das Document Root dagegen fest. Lesen Sie dann die Optionen im nächsten Abschnitt.
Was tun, wenn Sie Laravel auf cPanel ohne Änderung des Document Root betreiben müssen?
Fragen Sie zunächst Ihren Anbieter. Oft ändert ein einziges Support Ticket das Document Root. Klappt das nicht, installieren Sie das Projekt entweder auf einer Subdomain oder wechseln zu einem Layout, das den Inhalt von public in den öffentlichen Webordner verschiebt.
| Methode | So gehen Sie vor | Worauf Sie achten |
|---|---|---|
| Document Root ändern | Auf dem Bildschirm Domains mit Manage den Pfad zu public eintragen | Die sauberste Lösung, der Anbieter muss sie erlauben |
| Anwendung aus dem Webordner nehmen | Anwendung außerhalb des öffentlichen Webordners ablegen und den Inhalt von public hineinkopieren | Sie müssen die Pfade in index.php anpassen |
| Symbolischer Link | Den öffentlichen Webordner mit dem Ordner public verknüpfen | Der Anbieter muss symbolische Links erlauben |
Bei der zweiten Methode passen Sie in index.php die Pfade für Autoload, Bootstrap und Wartungsmodus an das neue Ordnerlayout an. Außerdem müssen Sie diese Datei nach Laravel Updates erneut prüfen, weil sie sich ändern kann. Diese Methode verursacht also Pflegeaufwand.
Welche Methode Sie auch wählen: Stellen Sie sicher, dass die .env Datei nicht im öffentlichen Webordner liegt, denn sonst liegen Ihre Geheimnisse offen. Rufen Sie zum Schluss im Browser Ihre Domain mit angehängtem /.env auf. Können Sie den Inhalt lesen, ist die Installation unsicher, und Sie müssen sie sofort korrigieren.
Welche Optimierungsbefehle führen Sie in der Produktion aus?
Die Dokumentation von Laravel empfiehlt, in der Produktion Konfiguration, Events, Routen und Views zu cachen. Ein einziger Befehl optimize erledigt alles, und laut Dokumentation gehört er in Ihren Deployment Ablauf. Die Tabelle zeigt die Einzelheiten.
| Befehl | Was er tut |
|---|---|
| php artisan optimize | Erzeugt die Caches für Konfiguration, Events, Routen und Views gemeinsam |
| php artisan config:cache | Fasst alle Konfigurationsdateien in einer Datei zusammen |
| php artisan route:cache | Reduziert die Routenregistrierung auf eine Cache Datei |
| php artisan view:cache | Kompiliert die Blade Views vorab |
| php artisan event:cache | Speichert die Zuordnung von Events und Listenern |
| php artisan optimize:clear | Entfernt diese Caches und die Schlüssel im Standard Cache Treiber |
Hier steckt allerdings eine wichtige Falle. Nachdem Sie die Konfiguration gecacht haben, liest Laravel die .env Datei nicht mehr, und die Funktion env liefert null. Rufen Sie env daher nur in den Dateien im Ordner config auf. Im Anwendungscode lesen Sie Werte mit der Funktion config.
Für einen breiteren Blick auf Caching lesen Sie unseren Beitrag Caching erklärt: Redis und Memcached.
Wie richten Sie den Cronjob für den Scheduler in cPanel ein?
Der Scheduler von Laravel braucht auf dem Server nur eine einzige Cronjob Zeile. Diese Zeile führt jede Minute den Befehl schedule:run aus, und der Befehl entscheidet, welche Aufgaben fällig sind. Zunächst definieren Sie die Aufgaben in routes/console.php. Der Zeitplan bleibt somit zusammen mit Ihrem Code in der Versionsverwaltung.
Die Zeile aus der Dokumentation von Laravel sieht so aus. Ersetzen Sie den Pfad durch Ihr eigenes Projekt:
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
Öffnen Sie in cPanel den Bildschirm Cron Jobs, wählen Sie jede Minute oder tragen Sie fünf Sterne von Hand ein. Schreiben Sie dann den absoluten Dateipfad in das Befehlsfeld. Auch der Pfad zu php unterscheidet sich je nach Anbieter. Schauen Sie daher in die PHP Angaben Ihres Hostingpanels oder probieren Sie im Terminal den Befehl which php. Ein Cronjob mit der falschen PHP Version kann still scheitern, selbst wenn die Website einwandfrei lädt.
Die Dokumentation zu Cronjobs in cPanel gibt zwei Warnungen. Erstens lassen Sie zwischen Cronjobs genug Zeit, damit der vorherige fertig wird. Zweitens bekommen Sie bei jedem Lauf eine Benachrichtigung per E-Mail, wenn Sie am Ende kein /dev/null anhängen. Führen Sie nach der Einrichtung php artisan schedule:list aus, um zu bestätigen, dass Ihre Aufgaben erscheinen. Haben Sie zum Beispiel einen täglichen Bericht definiert, sehen Sie dort den nächsten Lauf. Nutzen Sie schedule:work nicht in der Produktion, denn die Dokumentation zeigt es für die lokale Entwicklung.
Wie betreiben Sie Queue Worker in cPanel und auf einem VPS?
Der Befehl queue:work startet einen dauerhaft laufenden Prozess. Laut Dokumentation halten Worker Ihren Anwendungscode im Speicher. Das heißt, wenn Sie sie nach einem Release nicht neu starten, laufen sie mit altem Code weiter. Daher führen Sie bei jedem Deployment php artisan queue:restart aus.
Auf einem VPS halten Sie die Worker mit einem Prozessmanager wie Supervisor am Leben. Eine gekürzte Fassung des Beispiels aus der Dokumentation sieht so aus:
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /path/to/artisan queue:work
autostart=true
autorestart=true
numprocs=2
redirect_stderr=true
stdout_logfile=/path/to/worker.log
stopwaitsecs=3600
Im Shared Hosting gibt es meist keinen Prozessmanager. Ein üblicher Umweg ist, die Warteschlange per Cronjob in kurzen Abständen abzuarbeiten. Die Optionen --stop-when-empty und --max-time von queue:work passen dazu. Allerdings verarbeitet diese Methode Aufträge nicht sofort.
Kommt zum Beispiel eine Bestellbestätigung oder ein Bestandsabgleich verspätet, merkt das der Kunde. Geben Sie solchen Aufgaben stattdessen einen echten Worker. Ist Ihre Warteschlange kritisch, denken Sie an einen VPS oder eine verwaltete Plattform. Tragen Sie den Neustart der Worker außerdem in Ihre Checkliste ein.
Welche Nginx Einstellungen brauchen Sie auf einem VPS?
Auf einem VPS schreiben Sie die Konfiguration des Webservers selbst. Die Dokumentation von Laravel liefert ein vollständiges Nginx Beispiel. Nehmen Sie es daher als Ausgangspunkt und passen Sie es an Ihren Server an. Vor allem muss die Zeile root auf den Ordner public des Projekts zeigen.
server {
listen 80;
server_name example.com;
root /srv/example.com/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
}
Dieses kurze Beispiel zeigt nur die Idee. Das vollständige Beispiel enthält zusätzlich Sicherheitsheader, die Anbindung an PHP-FPM und eine Regel, die Dateien mit führendem Punkt sperrt. Der Socket Pfad von PHP-FPM ändert sich mit der installierten PHP Version. Kopieren Sie den Pfad aus der Dokumentation daher nicht unverändert.
Für HTTPS brauchen Sie außerdem ein Zertifikat. Bei den meisten cPanel Hostern stellt es der Anbieter automatisch aus. Auf einem VPS installieren Sie es dagegen selbst. Das Thema erklären wir in unserem Leitfaden Was ist ein SSL Zertifikat.
Wofür ist die .htaccess Datei bei Laravel auf cPanel da?
Im Standardgerüst von Laravel enthält der Ordner public eine fertige .htaccess Datei für Apache. Sie leitet Anfragen für Adressen, die nicht als Dateien existieren, an index.php weiter. So funktionieren saubere URLs wie /produkte, und Sie brauchen keine eigene Datei pro Route.
Die meisten cPanel Hoster betreiben Apache oder einen kompatiblen Server. Es sollte also ohne Zusatzeinrichtung laufen, denn Apache ist dort Standard. Legen Sie das Document Root jedoch auf den falschen Ordner, greift die .htaccess Datei nie, und nur die Startseite öffnet sich. Wenn Ihre Routen 404 liefern, prüfen Sie daher zuerst das Document Root.
Erstellen Sie ein Backup, bevor Sie Ihre eigene .htaccess bearbeiten. Ein kleiner Tippfehler kann die ganze Seite in einen 500er Fehler verwandeln. Sind Sie unsicher, bitten Sie lieber den Support Ihres Anbieters um Hilfe.
Wie konfigurieren Sie E-Mail und Logs?
Verschickt Ihre Anwendung Benachrichtigungen, Bestellungen oder Mails zum Zurücksetzen von Passwörtern, tragen Sie die Werte mit dem Anfang MAIL in Ihrer .env Datei ein. In cPanel legen Sie ein Postfach an und nutzen die SMTP Daten Ihres Anbieters. Halten Sie die Passwörter nur in der .env Datei, denn diese bleibt privat.
Logs sind mindestens so wichtig wie E-Mail. Weil Sie in der Produktion die Debug Anzeige abgeschaltet haben, ist der Ordner storage/logs Ihre einzige Informationsquelle. Bedenken Sie, dass dieser Ordner mit der Zeit wachsen kann. Ist das Speicherkontingent voll, meldet die Anwendung Schreibfehler.
Prüfen Sie die Logdateien daher regelmäßig, denn nur dort stehen die Ursachen. Senden Sie außerdem eine Test E-Mail aus der Produktion an eine eigene Adresse. Schicken Sie keine Testnachrichten an echte Kunden. Nutzen Sie Warteschlangen, bestätigen Sie, dass die Nachrichten in der Queue landen und ein Worker sie verarbeitet.
Wie unterscheiden sich lokale Entwicklung und Produktion?
Ein Laravel Projekt, das lokal läuft, verhält sich in der Produktion womöglich anders. Die beiden Umgebungen unterscheiden sich bei Fehleranzeige, Caching und Hintergrundprozessen. Die Tabelle fasst die wichtigsten Unterschiede aus der Dokumentation zusammen.
| Thema | Lokale Umgebung | Produktion |
|---|---|---|
| APP_DEBUG | Darf true sein | Immer false |
| Konfigurationscache | Aus, Änderungen sofort sichtbar | An mit config:cache |
| Scheduler | schedule:work | Eine Cronjob Zeile pro Minute |
| Queue Worker | Sie starten ihn von Hand | Prozessmanager oder Cronjob |
| Pakete | Entwicklungspakete enthalten | Nur das Nötige, mit --no-dev |
In der Praxis ist es eine gute Gewohnheit, Ihre Einstellungen für APP_ENV und Cache einmal lokal wie in der Produktion auszuprobieren. So finden Sie Überraschungen mit der Funktion env früh.
Warum zählt das für SEO, wenn Sie Laravel auf cPanel installieren?
Die technische Einrichtung beeinflusst die Sichtbarkeit in der Suche direkt. Liefert eine falsch konfigurierte Seite einen 500er Fehler, erreicht der Crawler von Google Ihre Seiten nicht. Fehlt HTTPS, sehen Nutzer eine Browserwarnung. Ein langsamer Server schwächt dann Rankings und Conversions gleichermaßen.
Prüfen Sie daher nach der Installation von Laravel auf cPanel diese Punkte: Öffnen sich alle Adressen über HTTPS, ist die Datei robots.txt erreichbar, und erzeugen Seiten Weiterleitungsketten? Die robots Datei bauen Sie mit unserem robots.txt Generator.
Der Zusammenhang zwischen Tempo und Umsatz ist bei Onlineshops noch stärker. Wir haben ihn im Beitrag Ladezeit im Onlineshop behandelt. Bei einem Shop mit Laravel verändern Cache und Hostingwahl also auch, wie weit Ihr Marketingbudget reicht.
Wie testen Sie die Installation danach?
Öffnen Sie zuerst die Startseite und dann eine Route, die nicht die Startseite ist. Öffnet sich die Startseite, andere Routen liefern aber 404, sind Document Root oder Umschreibregeln falsch. Danach führen Sie diese Prüfungen durch:
- Rufen Sie zunächst die Adresse /up auf. Die Health Route von Laravel liefert 200, wenn die Anwendung ohne Ausnahmen startet, sonst 500.
- Hängen Sie /.env an Ihre Domain an. Sehen Sie den Inhalt nicht, funktioniert es wie gewünscht.
- Bestätigen Sie außerdem, dass in storage/logs eine Logdatei entsteht und beschreibbar ist.
- Prüfen Sie, ob Ihre Aufgaben in der Ausgabe von php artisan schedule:list erscheinen.
- Schließlich verifizieren Sie Zertifikat und DNS Einträge mit Werkzeugen.
Für Zertifikat und DNS nutzen Sie unseren SSL Check und unsere DNS Abfrage. Nach dem Start ist auch eine Geschwindigkeitsmessung sinnvoll, und ein Lighthouse Test leistet das. Zudem lohnt sich der Beitrag zum Zusammenhang zwischen Tempo und Rankings: Wie beeinflusst die Ladezeit SEO.
Welche Fehler treten bei Laravel auf cPanel am häufigsten auf?
Die meisten Fehler haben wenige Ursachen: ein falsches Document Root, ein fehlender Schlüssel, Rechte und ein veralteter Cache. Lesen Sie immer zuerst das Log in storage/logs, denn bei ausgeschaltetem APP_DEBUG sehen Sie am Bildschirm keine Details. Die Tabelle fasst die wahrscheinlichen Ursachen zusammen.
| Symptom | Wahrscheinliche Ursache | Was Sie tun |
|---|---|---|
| Leere Seite oder Fehler 500 | Rechte, fehlende .env oder falsche PHP Version | Log lesen, Rechte und Version prüfen |
| Warnung wegen fehlendem Verschlüsselungsschlüssel | APP_KEY ist leer | php artisan key:generate ausführen |
| Nur die Startseite öffnet sich | Problem mit Document Root oder Umschreibung | Document Root auf den Ordner public legen |
| Änderung in .env ohne Wirkung | Konfiguration ist gecacht | php artisan config:clear, danach neu cachen |
| Hochgeladene Bilder liefern 404 | Kein symbolischer Link | php artisan storage:link ausführen |
| Fehler Class not found | Ein Service Provider nutzt ein Entwicklungspaket | Paket nach require verschieben oder Registrierung entfernen |
Die Fehlermeldung in eine Suchmaschine einzufügen ist oft der schnellste Weg. Kopieren Sie die ganze Meldung, denn Dateiname und Zeilennummer sind wichtig. So finden Sie die Quelle des Problems schneller. Vergleichen Sie jedoch jeden gefundenen Befehl mit der Dokumentation von Laravel, bevor Sie ihn ausführen.
Wann sollten Sie die Installation Ihrem Hostinganbieter überlassen?
Sie müssen nicht alles selbst tun. In manchen Fällen ist es sicherer, die Arbeit dem Anbieter oder einem erfahrenen Systemadministrator zu übergeben. Da wir kein Hostinganbieter sind, nennen wir diese Grenze gleich zu Beginn.
- Sie haben echte Kunden oder Bestelldaten in der Produktion und kein Backup.
- Ihnen fehlt die Erfahrung, SSH, Firewalls und Betriebssystem Updates zu verwalten.
- Ihr Hostingkonto hat kein Terminal, und Sie brauchen Dauerprozesse wie Warteschlangen.
- Sie brauchen ein Deployment ohne Ausfallzeit und hohe Verfügbarkeit.
- Sie nehmen erstmals eine Anwendung in Betrieb, die Zahlungen oder personenbezogene Daten verarbeitet.
In diesen Fällen lassen Sie den Anbieter die Einrichtung machen und prüfen nur das Ergebnis. Bei der Sicherheit zeigt unser Leitfaden zu den OWASP Top 10, auf welche Schwachstellen Sie achten. Sie können diese Themen deshalb als Checkliste im Gespräch mit Ihrem technischen Team nutzen.
Von einem Anbieter können Sie automatische Backups, Verwaltung der PHP Version, ein SSL Zertifikat und schnellen Support im Störungsfall verlangen. Bei einem Hoster mit diesen Leistungen wandern die riskanten Teile eines Laravel Setups zum Anbieter. Dann können Sie sich auf die Marketing und Produktseite Ihrer Arbeit konzentrieren.
Welche Checkliste folgen Sie bei jedem Deployment?
Haben Sie einmal von Hand ausgeliefert, senkt es Fehler, bei jedem Mal dieselben Schritte in derselben Reihenfolge auszuführen. Die folgende Abfolge fasst die offiziellen Befehle zusammen, die wir in diesem Leitfaden behandelt haben. Passen Sie sie daher an Ihr eigenes Projekt an.
php artisan down
git pull
composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan optimize
php artisan queue:restart
php artisan up
Die Dokumentation sagt, dass der Befehl down eine kurze Ausfallzeit verursacht. Wollen Sie ein Deployment ohne Ausfall, denken Sie an eine verwaltete Plattform. Haben Sie außerdem Aufgaben im Sekundentakt definiert, hängen Sie den Befehl schedule:interrupt ans Ende des Deployments.
Prüfen Sie schließlich nach jedem Deployment die Health Route und die Startseite. So entdecken Sie Probleme, bevor Ihre Nutzer sie finden. Die meisten Fehler bei Laravel auf cPanel entstehen, weil ein Schritt fehlt, daher gehört die Liste schriftlich festgehalten. Wächst Ihr Team, ist es sinnvoll, diese Schritte in ein Skript oder eine automatische Pipeline zu überführen.



