PHP Deployer auf Ubuntu 24.04 installieren: Der komplette Guide mit den 10 wichtigsten FAQ

Von Roland Golla
0 Kommentar
Technische Infografik: PHP 8.11 Deployer Installation mit schmelzendem Server

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.

0 Kommentar

Tutorials und Top Posts

Gib uns Feedback

Diese Seite benutzt Cookies. Ein Akzeptieren hilft uns die Seite zu verbessern. Ok Mehr dazu