Deployment von Symfony – Ein umfassender Leitfaden
In diesem Beitrag erkläre ich Schritt für Schritt, wie du ein Symfony-Projekt in einer Produktionsumgebung deployen kannst. Wir gehen dabei auf wichtige Aspekte wie Abhängigkeiten, Umgebungsvariablen, Webserver-Konfiguration und Sicherheitsmaßnahmen ein.
1. Voraussetzungen und Vorbereitung
Bevor du dein Projekt in Produktion überführst, solltest du folgende Punkte klären:
- Server-Zugang: Stelle sicher, dass du per SSH oder einem anderen Remote-Zugriff Zugriff auf deinen Server hast.
- PHP und Composer: Auf deinem Server sollten die benötigten PHP-Version und Composer installiert sein.
- Webserver: Konfiguriere deinen Webserver (Apache, Nginx o.ä.) so, dass der Document Root auf den
public/-Ordner deines Symfony-Projekts zeigt. - Datenbank: Richte deine Produktionsdatenbank ein und passe die Zugangsdaten in deiner Konfiguration an.
2. Projekt klonen und Abhängigkeiten installieren
Zunächst klonst du dein Repository auf den Server:
git clone git@github.com:dein-username/dein-projekt.git
cd dein-projekt
Anschließend installierst du die PHP-Abhängigkeiten ohne die Entwicklungs-Pakete und optimierst den Autoloader:
composer install --no-dev --optimize-autoloader
3. Umgebungsvariablen konfigurieren
In der Entwicklung nutzt Symfony typischerweise die .env-Datei. Für die Produktion ist es jedoch empfehlenswert, Umgebungsvariablen außerhalb des Repositories zu verwalten. Auf Shared Hosts, bei denen du keine globalen Umgebungsvariablen setzen kannst, verwendest du stattdessen eine .env.local-Datei.
Beispiel einer .env.local:
APP_ENV=prod
APP_DEBUG=false
APP_SECRET=dein_einzigartiger_geheimer_schluessel
DATABASE_URL="mysql://user:pass@localhost:3306/deinedb?serverVersion=5.7"
MAILER_DSN=smtp://username:password@smtp.example.com:port
MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=1
# JWT-Konfiguration (falls verwendet)
JWT_PRIVATE_KEY_PATH=%kernel.project_dir%/config/jwt/private.pem
JWT_PUBLIC_KEY_PATH=%kernel.project_dir%/config/jwt/public.pem
JWT_PASSPHRASE="dein_geheimer_passphrase"
Wichtig:
- Sorge dafür, dass
.env.localin deiner.gitignoreeingetragen ist, um sensible Daten nicht ins Repository zu laden. - Passe alle Werte (z. B. Datenbank- und Mailer-Daten) an deine Umgebung an.
4. Cache optimieren
Nachdem alle Umgebungsvariablen korrekt gesetzt sind, solltest du den Symfony-Cache für die Produktionsumgebung leeren und neu aufbauen:
php bin/console cache:clear --env=prod --no-debug
5. Assets und Frontend vorbereiten
Falls du Symfony Encore oder ein anderes Build-Tool verwendest, führe den Produktionsbuild aus, um deine CSS-, JavaScript- und Bilddateien zu optimieren:
yarn encore production
Importmap-Assets installieren
Wenn du die Importmap für Frontend-Assets verwendest (z. B. um Stimulus und andere Bibliotheken zu verwalten), führe folgenden Befehl aus, um die benötigten Assets zu installieren:
php bin/console importmap:install
Stelle sicher, dass alle generierten Assets in den public/-Ordner kopiert werden.
6. Webserver-Konfiguration
Dein Webserver (z. B. Apache oder Nginx) muss so konfiguriert sein, dass der public/-Ordner als Document Root dient. Beispiel für eine Nginx-Konfiguration:
server {
listen 80;
server_name deine-domain.de;
root /pfad/zu/deinem/projekt/public;
index index.php;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}
7. Sicherheitsmaßnahmen und weitere Anpassungen
- Dateiberechtigungen: Stelle sicher, dass der Webserver Schreibrechte für
var/cacheundvar/logbesitzt. - SSL: Richte HTTPS über ein SSL-Zertifikat ein, um die Datenübertragung zu sichern.
- Authentifizierung: Achte darauf, dass sensible Endpunkte, wie z. B. API-Routen, entsprechend abgesichert sind.
8. Weitere Tipps für den Produktionsbetrieb
- Deployment-Tool: Überlege den Einsatz von Deployment-Tools wie Deployer oder Capistrano, um den Veröffentlichungsprozess zu automatisieren.
- Monitoring: Implementiere ein Monitoring, um Server- und Anwendungsperformance im Blick zu behalten.
- Backup: Plane regelmäßige Backups deiner Datenbank und wichtigen Dateien.
Mit diesen Schritten solltest du in der Lage sein, dein Symfony-Projekt sicher und effizient in einer Produktionsumgebung zu betreiben. Solltest du während des Deployments auf Probleme stoßen, lohnt sich oft ein Blick in die offizielle Symfony-Dokumentation zum Deployment für weiterführende Hinweise und Best Practices.
Viel Erfolg beim Deployment deines Projekts!
0 Kommentare