Deployment ist das Herzstück eurer Software-Auslieferung – und genau hier trennt sich die Spreu vom Weizen. Nach über 15 Jahren Erfahrung in Softwarequalität und Remote Consulting wissen wir: Ein sauberes Deployment-Setup spart euch nicht nur Zeit, sondern auch graue Haare. Heute zeigen wir euch, wie ihr PHP Deployer auf Ubuntu 24.04 professionell einrichtet und die häufigsten Stolpersteine elegant umschifft.
Warum Deployer euer Deployment-Game verändert
Bevor wir in die technischen Details einsteigen: Deployer ist mehr als nur ein Tool – es ist euer Schweizer Taschenmesser für Zero-Downtime-Deployments. Mit über 15 Jahren Expertise in Open Source und Softwarequalität haben wir schon viele Deployment-Tools kommen und gehen sehen. Deployer hat sich durchgesetzt, weil es PHP-Entwicklern genau das gibt, was sie brauchen: Einfachheit gepaart mit Flexibilität.
Die 10 häufigsten Fragen zur Deployer Installation – direkt beantwortet
1. Wie installiere ich Deployer auf Ubuntu 24.04 mit PHP 8.1?
Die Installation auf Ubuntu 24.04 erfordert besondere Aufmerksamkeit bei der Versions-Kompatibilität. Hier der bewährte Weg:
# Composer global installieren (falls noch nicht vorhanden)
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer
# Deployer v7.x für PHP 8.1 installieren
composer global require deployer/deployer:^7.0
# PATH erweitern
echo 'export PATH="$HOME/.composer/vendor/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
Wichtig: Deployer v8.x benötigt PHP 8.2+. Für PHP 8.1 müsst ihr bei v7.x bleiben – das läuft stabil und zuverlässig.
2. Welche PHP-Extensions sind zwingend erforderlich?
Ohne die richtigen Extensions läuft nichts. Diese müssen installiert sein:
# Pflicht-Extensions prüfen
php -m | grep -E "(curl|openssl|zip|mbstring|json|hash|filter|tokenizer)"
# Falls Extensions fehlen
sudo apt update
sudo apt install php8.1-curl php8.1-zip php8.1-mbstring php8.1-xml
Unsere Empfehlung aus der Praxis: Installiert auch php8.1-intl
und php8.1-bcmath
– ihr werdet sie früher oder später brauchen.
3. Was tun bei „Permission Denied“ Fehlern?
Ein Klassiker, der uns allen schon begegnet ist. Die Lösung:
# Composer-Verzeichnis Rechte korrigieren
sudo chown -R $USER:$USER ~/.composer
chmod -R 755 ~/.composer
# Deploy-Verzeichnis vorbereiten
sudo chown -R deployer:www-data /var/www/your-project
chmod -R 755 /var/www/your-project
Pro-Tipp: Erstellt einen dedizierten deployer
User – das macht euer Setup sauberer und sicherer.
4. Deployer Binary vs. Composer Installation – was ist besser?
Nach jahrelanger Erfahrung: Composer gewinnt. Warum?
- Versionsverwaltung pro Projekt möglich
- Keine korrupten Binaries (wie im eingangs erwähnten Fall)
- Einfaches Update via
composer update
- Integration in CI/CD Pipelines problemlos
Für projektspezifische Installation:
cd /path/to/project
composer require --dev deployer/deployer:^7.0
5. Wie konfiguriere ich SSH Keys richtig für automatische Deployments?
SSH-Keys sind das A und O für sichere, automatische Deployments:
# Deployment-Key generieren
ssh-keygen -t ed25519 -C "deployer@your-project"
# Key zum SSH-Agent hinzufügen
ssh-add ~/.ssh/id_ed25519
# Public Key auf Server kopieren
ssh-copy-id user@production-server.com
# Verbindung testen
ssh -T user@production-server.com
Unser Tipp: Nutzt Ed25519 statt RSA – schneller und sicherer.
6. Wie behebe ich Memory Limit Probleme bei großen Deployments?
Große Projekte brauchen mehr Speicher. So optimiert ihr die Einstellungen:
# PHP CLI Memory Limit erhöhen
sudo nano /etc/php/8.1/cli/php.ini
# Setzen: memory_limit = 512M
# Composer Timeout erhöhen
composer config --global process-timeout 2000
# Für einzelnes Deployment
php -d memory_limit=1G vendor/bin/dep deploy production
7. Wie richte ich Zero-Downtime Deployments ein?
Zero-Downtime ist kein Hexenwerk – Deployer macht es einfach:
// deploy.php
set('keep_releases', 5);
set('shared_dirs', ['storage', 'uploads']);
set('shared_files', ['.env']);
set('writable_dirs', ['storage', 'cache']);
task('deploy', [
'deploy:prepare',
'deploy:vendors',
'deploy:clear_paths',
'deploy:symlink',
'deploy:unlock',
'deploy:cleanup',
]);
Das Geheimnis: Atomic Deployments durch Symlinks. Euer Code wird erst live geschaltet, wenn alles fertig ist.
8. Welche Deployer-Version passt zu meiner PHP-Version?
Die Kompatibilitätsmatrix, die ihr kennen müsst:
- PHP 7.4: Deployer 6.x (End of Life – updatet eure PHP-Version!)
- PHP 8.0: Deployer 7.x
- PHP 8.1: Deployer 7.x (empfohlen: 7.4.0)
- PHP 8.2+: Deployer 8.x
Unser Rat: Bleibt aktuell, aber nicht bleeding edge. PHP 8.1 mit Deployer 7.x ist der Sweet Spot für Stabilität.
9. Wie führe ich Rollbacks bei fehlgeschlagenen Deployments durch?
Fehler passieren – wichtig ist, schnell reagieren zu können:
# Aktuelle Releases anzeigen
dep releases production
# Rollback zum vorherigen Release
dep rollback production
# Spezifisches Release wiederherstellen
dep rollback production --release=2
Best Practice: Testet Rollbacks regelmäßig – nicht erst im Ernstfall!
10. Wie integriere ich Deployer in CI/CD Pipelines?
Automation ist King. So bindet ihr Deployer in eure Pipeline ein:
# .gitlab-ci.yml Beispiel
deploy:
stage: deploy
script:
- composer install --no-dev
- vendor/bin/dep deploy production
only:
- main
environment:
name: production
GitHub Actions? Kein Problem:
- name: Deploy
run: |
composer install --no-dev
vendor/bin/dep deploy production
Praxis-Tipp: Die erste erfolgreiche Deployment-Konfiguration
Nach über 15 Jahren Remote Consulting wissen wir: Der erste Deploy ist entscheidend. Hier unsere bewährte Minimal-Konfiguration:
// deploy.php
namespace Deployer;
require 'recipe/laravel.php'; // oder symfony.php, common.php
host('production')
->set('hostname', 'your-server.com')
->set('remote_user', 'deployer')
->set('deploy_path', '/var/www/app');
set('repository', 'git@github.com:your/repo.git');
set('git_tty', false);
after('deploy:failed', 'deploy:unlock');
Troubleshooting: Die häufigsten Fehler und ihre Lösungen
„ReflectionException“ bei Binary-Installation?
Löscht die korrupte Binary und nutzt Composer:
sudo rm /usr/local/bin/dep
composer global require deployer/deployer:^7.0
„Unsupported option accept-new“?
Eure OpenSSH-Version ist zu alt. Override den Git-SSH-Command:
set('git_ssh_command', 'ssh');
Composer lädt ewig?
Parallel Downloads aktivieren:
composer config --global repo.packagist composer https://packagist.org
Fazit: Deployment als Wettbewerbsvorteil
Mit der richtigen Deployer-Konfiguration macht ihr aus dem Deployment-Prozess einen echten Wettbewerbsvorteil. Statt stundenlang mit FTP-Uploads zu kämpfen, deployed ihr mit einem einzigen Befehl – sicher, schnell und reproduzierbar.
Bei Never Code Alone unterstützen wir euch gerne bei der Einrichtung eures perfekten Deployment-Setups. Mit über 15 Jahren Erfahrung in Softwarequalität, Open Source und Remote Consulting kennen wir die Fallstricke und Best Practices.
Braucht ihr Unterstützung bei eurem Deployment-Setup? Meldet euch bei uns: roland@nevercodealone.de
Wir helfen euch, euer Deployment auf das nächste Level zu heben – vom ersten Setup bis zur vollautomatisierten CI/CD-Pipeline. Gemeinsam machen wir euer Deployment bulletproof!
PS: Deployment ist kein Hexenwerk – mit den richtigen Tools und dem richtigen Know-how wird es zum Kinderspiel. Lasst uns gemeinsam dafür sorgen, dass ihr nie wieder Angst vor dem nächsten Release haben müsst.