Laravel .env und Storage für Produktion einrichten
Laravel .env und Storage für Produktion einrichten
Eine korrekt konfigurierte .env-Datei und funktionierender Storage sind essenziell für jede Laravel-Anwendung. In diesem Leitfaden lernen Sie, wie Sie diese für eine Produktionsumgebung korrekt einrichten.
Die .env-Datei verstehen
Die .env-Datei enthält umgebungsspezifische Konfigurationen, die nicht in die Versionskontrolle gehören.
Warum .env verwenden
- Trennt Konfiguration von Code
- Verhindert sensible Daten in Git
- Erleichtert die Bereitstellung in verschiedenen Umgebungen
- Jede Umgebung (Dev, Staging, Produktion) hat ihre eigene .env
.env erstellen
Wenn Sie Laravel klonen, erstellen Sie eine .env:
cd ~/domains/ihredomain.de/projekt
# Kopieren Sie die Beispieldatei
cp .env.example .env
# Generieren Sie den App-Schlüssel
php artisan key:generate
Essenzielle .env-Einstellungen
Konfigurieren Sie diese Einstellungen für die Produktion.
Anwendungseinstellungen
APP_NAME="Meine Laravel App"
APP_ENV=production
APP_KEY=base64:generierter-schlüssel-hier
APP_DEBUG=false
APP_TIMEZONE=Europe/Berlin
APP_URL=https://ihredomain.de
Wichtig:
APP_ENV=productionaktiviert ProduktionsoptimierungenAPP_DEBUG=falseverhindert, dass Fehlermeldungen sichtbar sindAPP_URLmuss Ihre vollständige URL mit https enthalten
Datenbankkonfiguration
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=ihre_datenbank
DB_USERNAME=ihr_benutzer
DB_PASSWORD=ihr_passwort
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci
Logging-Konfiguration
LOG_CHANNEL=daily
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=error
Für die Produktion:
dailyerstellt pro Tag eine neue LogdateiLOG_LEVEL=errorprotokolliert nur Fehler, keine Warnungen
Cache und Session
CACHE_STORE=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_ENCRYPT=true
SESSION_PATH=/
SESSION_DOMAIN=.ihredomain.de
Für bessere Leistung auf Shared Hosting ist file die beste Wahl.
Queue-Konfiguration
QUEUE_CONNECTION=database
Oder für Shared Hosting ohne Worker:
QUEUE_CONNECTION=sync
Mail-Konfiguration
MAIL_MAILER=smtp
MAIL_HOST=mail.ihredomain.de
MAIL_PORT=587
MAIL_USERNAME=info@ihredomain.de
MAIL_PASSWORD=ihr-mail-passwort
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=info@ihredomain.de
MAIL_FROM_NAME="${APP_NAME}"
Storage konfigurieren
Laravel verwendet den Storage-Ordner für Logs, Cache und Uploads.
Storage-Struktur
storage/
├── app/
│ ├── public/ # Öffentlich zugängliche Uploads
│ └── private/ # Private Dateien
├── framework/
│ ├── cache/ # Dateicache
│ ├── sessions/ # Sitzungsdateien
│ └── views/ # Kompilierte Ansichten
└── logs/ # Logdateien
Storage-Link erstellen
Der öffentliche Storage muss über das Web zugänglich sein:
# Erstellen Sie den Symlink
php artisan storage:link
Dies erstellt: public/storage -> storage/app/public
Überprüfen Sie, ob der Link funktioniert:
ls -la public/
# Sie sehen: storage -> /path/to/storage/app/public
Manueller Symlink
Wenn der Artisan-Befehl nicht funktioniert:
cd public
ln -s ../storage/app/public storage
Storage-Berechtigungen einstellen
Stellen Sie sicher, dass Laravel schreiben kann:
# Rekursiv beschreibbar machen
chmod -R 775 storage
chmod -R 775 bootstrap/cache
# Besitzer einstellen (falls nötig)
chown -R www-data:www-data storage
chown -R www-data:www-data bootstrap/cache
Auf Shared Hosting ist normalerweise nur chmod erforderlich.
Produktionssicherheit
Sichern Sie Ihre .env und Storage.
.env sichern
Die .env-Datei darf niemals öffentlich zugänglich sein:
- Laravel's public-Ordner ist das Dokumenten-Root
- .env befindet sich eine Ebene höher
- .htaccess blockiert den Zugriff Überprüfen Sie mit:
curl https://ihredomain.de/.env
# Sollte 403 oder 404 geben, NIEMALS den Inhalt!
.env in .gitignore
Stellen Sie sicher, dass .env niemals in Git kommt:
.env
.env.backup
.env.production
Storage schützen
Private Uploads schützen:
// In routes/web.php
Route::get('/download/{file}', function ($file) {
// Autorisierungsprüfung
if (!auth()->check()) {
abort(403);
}
return Storage::download('private/' . $file);
});
Cache-Konfiguration
Optimieren Sie das Caching für die Produktion.
Config-Cache
php artisan config:cache
Dies kombiniert alle Konfigurationsdateien in einer zwischengespeicherten Datei. Achtung: Nach config:cache wird .env nicht mehr direkt gelesen. Änderungen in .env erfordern:
php artisan config:clear
php artisan config:cache
Route-Cache
php artisan route:cache
Beschleunigt die Routenauflösung erheblich.
View-Cache
php artisan view:cache
Pre-kompiliert alle Blade-Templates.
Alles zusammen
php artisan optimize
Oder bei der Bereitstellung:
php artisan optimize:clear
php artisan optimize
Häufige Probleme
Storage-Berechtigung verweigert
# Berechtigungen zurücksetzen
chmod -R 775 storage bootstrap/cache
# SELinux-Kontext (CentOS/RHEL)
chcon -R -t httpd_sys_rw_content_t storage
Symlink funktioniert nicht
Auf einigen Servern sind Symlinks deaktiviert:
# Kopieren Sie anstelle des Symlinks
cp -r storage/app/public/* public/storage/
Oder passen Sie den FileController an, um Dateien zu servieren.
.env-Änderungen funktionieren nicht
# Config-Cache leeren
php artisan config:clear
# Oder wenn Sie kein SSH haben
# Löschen Sie: bootstrap/cache/config.php
APP_KEY-Probleme
Wenn Ihr APP_KEY fehlt oder falsch ist:
php artisan key:generate
Dies regeneriert den Schlüssel. Achtung: Bestehende verschlüsselte Daten werden unlesbar.
Environment-Erkennung
Überprüfen Sie die aktuelle Umgebung im Code:
// Im Code
if (app()->environment('production')) {
// Produktionsspezifischer Code
}
// In Blade
@production
<!-- Nur in Produktion -->
@endproduction
Best Practices
.env-Management
- Verwenden Sie niemals dieselbe .env in Dev und Produktion
- Bewahren Sie die Produktions-.env sicher auf (Passwort-Manager)
- Verwenden Sie starke, einzigartige Passwörter
- Drehen Sie regelmäßig Anmeldeinformationen
Storage-Management
- Konfigurieren Sie ein Backup für storage/app
- Erwägen Sie Cloud-Storage für Skalierung
- Räumen Sie alte Logs regelmäßig auf
Verwandte Artikel
- PHP-Frameworks und DirectAdmin
- Laravel mit Composer über SSH
- Artisan und Konsolenbefehle über SSH
- Mehr Informationen über Laravel-Hosting bei Theory7
Brauchen Sie Hilfe?
Wir sind für Sie da! Stoßen Sie auf Probleme oder haben Sie Fragen? Unser Support-Team hilft Ihnen gerne persönlich weiter. Senden Sie uns eine Nachricht über das Ticketsystem - wir antworten in der Regel innerhalb weniger Stunden und denken gerne mit Ihnen mit.
0 van 0 vonden dit nuttig