Wie man Laravel auf einem Linux VPS (Debian 13 / Ubuntu 24.04) installiert
GeschÀtzte Zeit: 30-45 Minuten
Schwierigkeit: Mittel ââ
System: Debian 13 (Trixie) / Ubuntu 24.04 LTS
đ EinfĂŒhrung
Dieser Leitfaden erklÀrt Ihnen, wie Sie Laravel 12 (neueste Version) auf einem Linux VPS mit Debian 13 oder Ubuntu 24.04 installieren. Am Ende dieses Tutorials haben Sie eine produktionsbereite Umgebung mit:
- â PHP 8.3 (erforderlich fĂŒr Laravel 12)
- â Composer (PHP-AbhĂ€ngigkeitsmanager)
- â Nginx (leistungsstarker Webserver)
- â MariaDB (Datenbank)
- â Laravel 12 (PHP-Framework)
Voraussetzungen
| Voraussetzung | Beschreibung |
|---|---|
| đ„ïž Linux VPS | Debian 13 oder Ubuntu 24.04 mit Root-Zugriff |
| đ SSH-Zugriff | Root- oder Sudo-Benutzeranmeldung |
| đ Domainname | (Optional) Zum Zugriff ĂŒber eine URL |
| đŸ RAM | Mindestens 1 GB empfohlen |
| đż Speicherplatz | Mindestens 10 GB |
Erforderliche Konfiguration fĂŒr Laravel 12
| Komponente | Mindestversion |
|---|---|
| PHP | 8.2 (8.3 oder 8.4 empfohlen) |
| Composer | 2.x |
| Datenbank | MySQL 5.7+ / MariaDB 10.3+ / PostgreSQL 10+ / SQLite 3.26+ |
đ Schritt 1: System aktualisieren
Aktualisieren Sie Ihr System, bevor Sie mit der Installation beginnen.
SSH-Verbindung
ssh root@your-server-ip
Pakete aktualisieren
# Paketliste aktualisieren
apt update
# Installierte Pakete aktualisieren
apt upgrade -y
â Erwartetes Ergebnis: Alle Pakete sind auf dem neuesten Stand.
đ Schritt 2: PHP 8.3 installieren
Laravel 12 erfordert mindestens PHP 8.2. Wir werden PHP 8.3 installieren, um bessere Leistung zu erzielen.
FĂŒr Debian 13
Debian 13 (Trixie) enthĂ€lt standardmĂ€Ăig PHP 8.4. FĂŒgen Sie das Sury-Repository hinzu, um PHP 8.3 zu installieren:
# AbhÀngigkeiten installieren
apt install -y apt-transport-https lsb-release ca-certificates curl gnupg
# GPG-SchlĂŒssel des Sury-Repository herunterladen
curl -fsSL https://packages.sury.org/php/apt.gpg | gpg --dearmor -o /usr/share/keyrings/sury-php.gpg
# Sury-Repository hinzufĂŒgen
echo "deb [signed-by=/usr/share/keyrings/sury-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/sury-php.list
# Paketliste aktualisieren
apt update
FĂŒr Ubuntu 24.04
Ubuntu 24.04 enthĂ€lt standardmĂ€Ăig PHP 8.3. Wenn Sie eine neuere Version wĂŒnschen, fĂŒgen Sie das PPA OndĆej hinzu:
# AbhÀngigkeiten installieren
apt install -y software-properties-common
# PHP-PPA hinzufĂŒgen (optional fĂŒr PHP 8.4)
add-apt-repository ppa:ondrej/php -y
# Paketliste aktualisieren
apt update
PHP 8.3 und erforderliche Erweiterungen installieren
apt install -y php8.3 php8.3-fpm php8.3-cli php8.3-common \
php8.3-mysql php8.3-pgsql php8.3-sqlite3 \
php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml \
php8.3-zip php8.3-bcmath php8.3-intl php8.3-readline \
php8.3-tokenizer php8.3-opcache
| Erweiterung | Verwendung |
|---|---|
php8.3-fpm | FastCGI-Prozess-Manager (fĂŒr Nginx) |
php8.3-mysql | MySQL/MariaDB-Verbindung |
php8.3-curl | HTTP-Anfragen |
php8.3-gd | Bildmanipulation |
php8.3-mbstring | Multibyte-Zeichenketten (UTF-8) |
php8.3-xml | XML-Verarbeitung |
php8.3-zip | ZIP-Komprimierung |
php8.3-bcmath | PrÀzisionsberechnungen |
php8.3-intl | Internationalisierung |
Installation ĂŒberprĂŒfen
php -v
Erwartetes Ergebnis:
PHP 8.3.x (cli) (built: ...)
Copyright (c) The PHP Group
Zend Engine v4.3.x, Copyright (c) Zend Technologies
with Zend OPcache v8.3.x, Copyright (c), by Zend Technologies đŠ Schritt 3: Composer installieren
Composer ist der PHP-AbhĂ€ngigkeitsmanager, der fĂŒr Laravel unerlĂ€sslich ist.
Composer herunterladen und installieren
# Installer herunterladen
curl -sS https://getcomposer.org/installer -o composer-setup.php
# Composer global installieren
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
# Installer entfernen
rm composer-setup.php
Installation ĂŒberprĂŒfen
composer --version
Erwartetes Ergebnis:
Composer version 2.x.x 2024-xx-xx xx:xx:xx đ Schritt 4: Nginx installieren
Nginx ist ein leistungsstarker Webserver, ideal fĂŒr Laravel.
Nginx installieren
apt install -y nginx
Nginx starten und aktivieren
# Nginx starten
systemctl start nginx# Beim Start aktivieren
systemctl enable nginx# Status ĂŒberprĂŒfen
systemctl status nginx
Erwartetes Ergebnis:
â nginx.service - Ein leistungsstarker Webserver und ein Reverse-Proxy-Server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; ...)
Active: active (running) since ...
Nginx testen
Ăffnen Sie Ihren Browser und gehen Sie zu http://your-server-ip. Sie sollten die Standardseite von Nginx sehen.
đïž Schritt 5: MariaDB installieren
MariaDB ist eine MySQL-kompatible, leistungsstarke und Open-Source-Datenbank.
MariaDB installieren
apt install -y mariadb-server mariadb-client
MariaDB starten und aktivieren
# MariaDB starten
systemctl start mariadb# Beim Start aktivieren
systemctl enable mariadb# Status ĂŒberprĂŒfen
systemctl status mariadb
Installation sichern
mysql_secure_installation
Beantworten Sie die Fragen:
| Frage | Empfohlene Antwort |
|---|---|
| Geben Sie das aktuelle Passwort fĂŒr root ein | DrĂŒcken Sie die Eingabetaste (leer) |
| Wechseln Sie zur unix_socket-Authentifizierung | n |
| Ăndern Sie das Root-Passwort | Y und geben Sie ein starkes Passwort ein |
| Entfernen anonymer Benutzer | Y |
| Root-Anmeldung entfernen | Y |
| Testdatenbank entfernen | Y |
| Berechtigungstabellen neu laden | Y |
Datenbank fĂŒr Laravel erstellen
# Mit MariaDB verbinden
mysql -u root -p
-- Datenbank erstellen
CREATE DATABASE laravel CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- Benutzer erstellen
CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'YourSecurePassword123!';
-- Berechtigungen erteilen
GRANT ALL PRIVILEGES ON laravel.* TO 'laravel_user'@'localhost';
-- Ănderungen anwenden
FLUSH PRIVILEGES;
-- Verlassen
EXIT;
đ Hinweis: Behalten Sie diese Informationen fĂŒr die Konfiguration von Laravel bei:
- Datenbank:
laravel- Benutzer:
laravel_user- Passwort:
YourSecurePassword123!
đ Schritt 6: Laravel 12 installieren
Projektverzeichnis erstellen
# Verzeichnis fĂŒr Websites erstellen
mkdir -p /var/www
# Ins Verzeichnis wechseln
cd /var/www
Laravel ĂŒber Composer installieren
composer create-project laravel/laravel monsite
đĄ Ersetzen Sie
monsitedurch den Namen Ihres Projekts.
Erwartetes Ergebnis:
Creating a "laravel/laravel" project at "./monsite"
Installing laravel/laravel (v12.x.x)
- Downloading laravel/laravel (v12.x.x)
- Installing laravel/laravel (v12.x.x): Extracting archive
...
Application ready! Build something amazing. Projektstruktur von Laravel
đ /var/www/monsite/
âââ đ app/ â Anwendungscode
âââ đ bootstrap/ â Startdateien
âââ đ config/ â Konfiguration
âââ đ database/ â Migrationen und Seeds
âââ đ public/ â Web-Einstiegspunkt (index.php)
âââ đ resources/ â Ansichten, CSS, JS
âââ đ routes/ â Routen der Anwendung
âââ đ storage/ â Generierte Dateien, Protokolle, Cache
âââ đ tests/ â Unittests
âââ đ vendor/ â Composer-AbhĂ€ngigkeiten
âââ đ .env â Umgebungsvariablen
âââ đ artisan â CLI Laravel
âââ đ composer.json â ProjektabhĂ€ngigkeiten
âïž Schritt 7: Laravel konfigurieren
.env-Datei konfigurieren
cd /var/www/monsite
nano .env
Bearbeiten Sie die folgenden Zeilen:
APP_NAME="My Laravel Site"
APP_ENV=production
APP_DEBUG=false
APP_URL=http://your-domain.com
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel_user
DB_PASSWORD=YourSecurePassword123!
â ïž Wichtig: Setzen Sie in der Produktion
APP_DEBUG=false, um keine sensiblen Informationen preiszugeben.
AnwendungsschlĂŒssel generieren
php artisan key:generate
Erwartetes Ergebnis:
INFO Application key set successfully.
Migrationen ausfĂŒhren
php artisan migrate
Erwartetes Ergebnis:
INFO Running migrations.
2024_01_01_000000_create_users_table ............... 45ms DONE
2024_01_01_000001_create_password_reset_tokens_table 12ms DONE
2024_01_01_000002_create_sessions_table ............ 18ms DONE
...
đ Schritt 8: Berechtigungen konfigurieren
Laravel erfordert, dass bestimmte Verzeichnisse beschreibbar sind.
Benutzer festlegen
# Besitzer auf den Webbenutzer Àndern
chown -R www-data:www-data /var/www/monsite
Berechtigungen festlegen
# Berechtigungen fĂŒr Verzeichnisse
find /var/www/monsite -type d -exec chmod 755 {} \;
# Berechtigungen fĂŒr Dateien
find /var/www/monsite -type f -exec chmod 644 {} \;
# Spezielle Berechtigungen fĂŒr storage und bootstrap/cache
chmod -R 775 /var/www/monsite/storage
chmod -R 775 /var/www/monsite/bootstrap/cache
đ§ Schritt 9: Nginx fĂŒr Laravel konfigurieren
Website-Konfiguration erstellen
nano /etc/nginx/sites-available/monsite
FĂŒgen Sie die folgende Konfiguration ein:
server {
listen 80;
listen [::]:80;
# Ersetzen Sie durch Ihre Domain oder IP
server_name your-domain.com www.your-domain.com;
# Website-Stammverzeichnis (Laravel public-Verzeichnis)
root /var/www/monsite/public;
# Indexdateien
index index.php index.html index.htm;
# Codierung
charset utf-8;
# Protokolle
access_log /var/log/nginx/monsite.access.log;
error_log /var/log/nginx/monsite.error.log;
# Anfragenverarbeitung
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# Statische Dateien
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
# Fehler 404 â Laravel
error_page 404 /index.php;
# PHP-Verarbeitung ĂŒber PHP-FPM
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_hide_header X-Powered-By;
}
# Zugriff auf versteckte Dateien blockieren
location ~ /\.(?!well-known).* {
deny all;
}
}
Website aktivieren
# Symbolischen Link erstellen
ln -s /etc/nginx/sites-available/monsite /etc/nginx/sites-enabled/
# Standardwebsite deaktivieren (optional)
rm /etc/nginx/sites-enabled/default
# Konfiguration testen
nginx -t
Erwartetes Ergebnis:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Nginx neu starten
systemctl restart nginx
â Schritt 10: Installation testen
Website aufrufen
Ăffnen Sie Ihren Browser und gehen Sie zu:
http://your-server-ip(falls keine Domain vorhanden)http://your-domain.com(falls Domain konfiguriert)
Sie sollten die Startseite von Laravel sehen:
Anwendungsgesundheit ĂŒberprĂŒfen
Laravel 12 enthÀlt eine Health-Check-Route:
curl http://localhost/up
Erwartetes Ergebnis: HTTP-Code 200 (OK)
đ Schritt 11: Mit HTTPS (Let's Encrypt) absichern
Certbot installieren
apt install -y certbot python3-certbot-nginx
SSL-Zertifikat erhalten
certbot --nginx -d your-domain.com -d www.your-domain.com
Befolgen Sie die Anweisungen:
- Geben Sie Ihre E-Mail-Adresse ein
- Akzeptieren Sie die Bedingungen
- WĂ€hlen Sie die Umleitung von HTTP zu HTTPS (empfohlen)
Automatische Erneuerung ĂŒberprĂŒfen
certbot renew --dry-run
Erwartetes Ergebnis:
Congratulations, all simulated renewals succeeded
â Ihre Website ist jetzt ĂŒber
https://your-domain.comerreichbar
đ ïž NĂŒtzliche Laravel-Artisan-Befehle
Artisan (CLI Laravel)
# Gehe in das Projektverzeichnis
cd /var/www/meineseite
# Zeige alle verfĂŒgbaren Befehle an
php artisan list
# Cache leeren
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
# FĂŒr die Produktion optimieren
php artisan optimize
# Controller erstellen
php artisan make:controller NameController
# Modell mit Migration erstellen
php artisan make:model NameModell -m
# Migrationen ausfĂŒhren
php artisan migrate
# ZurĂŒckrollen
php artisan migrate:rollback
# Wartungsmodus
php artisan down
php artisan up
đ Optimierung fĂŒr die Produktion
Laravel optimieren
cd /var/www/meineseite
# Konfiguration im Cache speichern
php artisan config:cache
# Routen im Cache speichern
php artisan route:cache
# Ansichten im Cache speichern
php artisan view:cache
# Globale Optimierung
php artisan optimize
OPcache konfigurieren
nano /etc/php/8.3/fpm/conf.d/10-opcache.ini
FĂŒge hinzu oder Ă€ndere:
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0
opcache.save_comments=1
Starte PHP-FPM neu:
systemctl restart php8.3-fpm
đ§ Fehlerbehebung
Fehler 500 - Interner Serverfehler
| â Ursache | â Lösung |
|---|---|
| Falsche Berechtigungen | chown -R www-data:www-data /var/www/meineseite |
| Nicht zugÀnglicher Speicher | chmod -R 775 /var/www/meineseite/storage |
| Fehlender APP_KEY | php artisan key:generate |
| Falsch konfigurierte .env-Datei | ĂberprĂŒfe die Datenbankgrundparameter |
# Laravel-Fehler anzeigen
tail -f /var/www/meineseite/storage/logs/laravel.log
Fehler 502 Bad Gateway
| â Ursache | â Lösung |
|---|---|
| PHP-FPM nicht gestartet | systemctl start php8.3-fpm |
| Falscher PHP-Socket | ĂberprĂŒfe /var/run/php/php8.3-fpm.sock |
| Falsche PHP-Version | update-alternatives --config php |
Datenbankverbindungsfehler
| â Ursache | â Lösung |
|---|---|
| MariaDB nicht gestartet | systemctl start mariadb |
| Falsche Anmeldeinformationen | ĂberprĂŒfe .env (DB_DATABASE, DB_USERNAME, DB_PASSWORD) |
| Nicht erstellte Datenbank | Erstelle die Datenbank mit mysql -u root -p |
# Verbindung testen
php artisan tinker
>>> DB::connection()->getPdo();
WeiĂe Seite
# Debugging temporÀr aktivieren
nano /var/www/meineseite/.env
# Ăndere APP_DEBUG=true
# Cache leeren
php artisan cache:clear
php artisan config:clear
# Logs ĂŒberprĂŒfen
tail -50 /var/www/meineseite/storage/logs/laravel.log
đ Zusammenfassung der Befehle
# === SYSTEMUPDATE ===
apt update && apt upgrade -y
# === PHP 8.3 INSTALLATION (Debian 13) ===
apt install -y apt-transport-https lsb-release ca-certificates curl gnupg
curl -fsSL https://packages.sury.org/php/apt.gpg | gpg --dearmor -o /usr/share/keyrings/sury-php.gpg
echo "deb [signed-by=/usr/share/keyrings/sury-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/sury-php.list
apt update
apt install -y php8.3 php8.3-fpm php8.3-cli php8.3-common php8.3-mysql php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip php8.3-bcmath php8.3-intl
# === COMPOSER INSTALLATION ===
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# === NGINX INSTALLATION ===
apt install -y nginx
systemctl enable nginx && systemctl start nginx
# === MARIADB INSTALLATION ===
apt install -y mariadb-server mariadb-client
systemctl enable mariadb && systemctl start mariadb
mysql_secure_installation
# === DATENBANK ERSTELLEN ===
mysql -u root -p -e "CREATE DATABASE laravel; CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'Passwort'; GRANT ALL ON laravel.* TO 'laravel_user'@'localhost'; FLUSH PRIVILEGES;"
# === LARAVEL INSTALLATION ===
cd /var/www
composer create-project laravel/laravel meineseite
cd meineseite
php artisan key:generate
php artisan migrate
# === BERECHTIGUNGEN ===
chown -R www-data:www-data /var/www/meineseite
chmod -R 775 /var/www/meineseite/storage /var/www/meineseite/bootstrap/cache
# === HTTPS (Let's Encrypt) ===
apt install -y certbot python3-certbot-nginx
certbot --nginx -d your-domain.com
đ Fazit
Herzlichen GlĂŒckwunsch! Sie haben erfolgreich installiert:
- â PHP 8.3 mit allen Laravel-Erweiterungen
- â Composer 2.x zur Verwaltung von AbhĂ€ngigkeiten
- â Nginx fĂŒr Laravel konfiguriert
- â MariaDB mit einer dedizierten Datenbank
- â Laravel 12 bereit fĂŒr die Produktion
- â HTTPS mit Let's Encrypt (optional)
NĂ€chste Schritte
- đ Konsultieren Sie die Laravel-Dokumentation
- đš Installieren Sie ein Starter-Kit:
php artisan breeze:installoderphp artisan jetstream:install - đ Konfigurieren Sie Queues mit Redis oder Supervisor
- đ§ Konfigurieren Sie den E-Mail-Versand (SMTP, Mailgun, etc.)

