Wie Sie Ihre TYPO3-Implementierung automatisieren (mit PHP Deployer)

Sind Sie auf der Suche nach einem automatischen & modernen TYPO3 Deployment? In diesem Artikel lernen Sie die Schritt-für-Schritt-Anleitung für den Einsatz von TYPO3 mit CI/CD und den sofort einsatzbereiten TYPO3 Deployer-Ansatz für Einsteiger bis hin zu fortgeschrittenen TYPO3 Entwicklern. Entwickeln und implementieren Sie Ihr TYPO3-Projekt im modernen TYPO3-Entwicklungszeitalter immer noch mit einem Tool wie SFTP? Dann, mein Freund, sollten Sie darüber nachdenken, TYPO3 Deploy-Techniken zu erlernen und zu implementieren. Vertrauen Sie mir; Ihr Leben wird mit der Entwicklung, dem Einsatz und der Wartung von TYPO3 viel besser und komfortabler sein.

Wie Sie Ihre TYPO3-Implementierung automatisieren (mit PHP Deployer)

FYI. This blog is translated by machine. Please ignore any spelling and grammar errors; sorry for such inconvenience. We appreciate your understanding and support.

Sind Sie auf der Suche nach einem automatischen & modernen TYPO3 Deployment? Dann sind Sie hier an der richtigen Stelle. In diesem Artikel lernen Sie die Schritt-für-Schritt-Anleitung für den Einsatz von TYPO3 mit CI/CD-Ansatz für Einsteiger bis hin zu fortgeschrittenen TYPO3-Entwicklern.

Entwickeln und implementieren Sie Ihr TYPO3-Projekt im modernen TYPO3-Entwicklungszeitalter immer noch mit einem Tool wie SFTP? Dann, mein Freund, sollten Sie darüber nachdenken, TYPO3-Deploy-Techniken zu erlernen und zu implementieren. Vertrauen Sie mir; Ihr Leben wird mit der Entwicklung, dem Einsatz und der Wartung von TYPO3 viel besser und komfortabler sein.

Stellen Sie sich die Situation vor, Sie arbeiten an einem TYPO3-Projekt und haben viele Funktionen fertiggestellt, jetzt wollen Sie live gehen oder Server für Ihre Kunden bereitstellen - wie kann das hektisch sein?

Aber um Ihre Zeit zu sparen, mit dem bekanntesten PHP-Deployment-Tool. Als PHP-Entwickler sollten Sie ein Produkt eines so hervorragenden CI/CD-Bereitstellungswerkzeugs sein, das die PHP-Sprache integriert hat. Es zeigt die grenzenlose Leistungsfähigkeit von PHP.

Mit einem Deployer brauchen Sie nur einen Befehl auszuführen, um alles automatisch bereitzustellen.

// Just run to deploy your TYPO3 website to the server 
dep deploy

Ist das nicht cool, hm? Dann, ohne zu warten, fangen wir an, moderne TYPO3-Bereitstellung zu lernen, zu erforschen und zu implementieren.

 

What is TYPO3 Deployer?

What is TYPO3 Deployer

PHP (Deployer) ist ein sehr bequemes und phantastisches Werkzeug, mit dem sich beliebige PHP-basierte Anwendungen einfach bereitstellen lassen. Der Deployer ist eine Open-Source-Anwendung, die kostenlos zur Verfügung steht. Ein Teil der bekannten Plattformen, die es unterstützt, sind MVC/CMS, TYPO3, Laravel, CakePHP, Codeigniter, Drupal und einige mehr.

Warum TYPO3 Deployer?

Der Deployer begleitet ein einfaches Einrichtungsverfahren, und es erfordert nur minimalen Lernaufwand. Jeder mit einigen Programmier- und Kodierfähigkeiten kann zweifellos mit der Erstellung von Skripten mit PHP Deployer beginnen. Abgesehen davon verfügt der Deployer über ein ausgedehntes Community-Netzwerk, das einen Großteil der vorbereiteten Skripte bereitstellt, um Inhalte (Deployer-Pläne) zu nutzen, mit denen die Arbeit beginnen kann.

Merkmale des TYPO3-Deployers

  • Der einfache Einrichtungsprozess und eine minimale Lernkurve
  • Sofort einsatzbereite Rezepte für die meisten Frameworks
  • Parallele Ausführung ohne Erweiterungen
  • Ist etwas schief gelaufen? Rollback zur vorherigen Version
  • Agentenlos, es ist nur SSH.
  • Null Ausfallzeit-Bereitstellungen

Klassische vs. moderne TYPO3-Bereitstellung

Klassisches TYPO3 Deployment, d.h., Sie arbeiten immer noch mit alten Methoden, um die TYPO3-Website auf dem lokalen Server zu erstellen und Ihren Code bzw. Ihre Dateien manuell über SFTP hochzuladen.

Modernes TYPO3 Deployment bedeutet, dass Sie sich mit fortgeschrittenen Konzepten von CI (Continuous Integration) / CD (Continuous Deployment) selbst verbessert haben.

Der TYPO3 Deployer funktioniert - Zur automatischen Bereitstellung Ihrer TYPO3-Website von GIT auf SERVER.

Wie installiert und konfiguriert man den TYPO3-Deployer?

Sie können einen TYPO3-Einsatz auf vielfältige Weise auf Anwendungsebene (mit PHP PHAR-Datei) oder auf globaler Ebene installieren und konfigurieren.

Gut, dass die PHP-Deployer-Gemeinschaft auch das CMS "TYPO3" als Teil des Kerns mit einem sofort einsatzbereiten TYPO3-Einsatz anbietet.

Für den Anfang installieren und konfigurieren wir es global mit den unten aufgeführten Schritten.

Voraussetzungen für das TYPO3 Deployment Tool

  • PHP >= 7.3
  • Richten Sie Ihre TYPO3-Site mit GIT wie Giteffortlesslab, Github, etc. ein.
  • SSH-Zugang Ihres Staging-, Produktions-, etc.

Option 1. Phar-Archiv von Deployer herunterladen (für Anfänger empfohlen)

Um Deployer als Phar-Archiv zu installieren, führen Sie die folgenden Befehle aus:

curl -LO https://deployer.org/deployer.phar
mv deployer.phar /usr/local/bin/dep
chmod +x /usr/local/bin/dep

Option 2. Quell-Composer Deployer-Installation

// To install Deployer source version with Composer, run the command:
composer require deployer/deployer --dev

// You can also install it globally:
composer global require deployer/deployer

Option 3. Verteilung Composer Deployer-Installation

Um die Deployer-Distributionsversion mit Composer zu installieren, führen Sie den Befehl aus:

composer require deployer/dist --dev

// Let’s have quick test-drive
dep --version

Wie wird TYPO3 eingesetzt?

Ohne lange zu warten, folgt nun ein praktisches Beispiel mit einer Schritt-für-Schritt-Anleitung für den Einsatz von TYPO3.

Schritt 1. TYPO3-Server und -Stufen konfigurieren

Erstellen Sie an Ihrer Wurzel des Projekts die Datei .hosts.yaml mit den unten aufgeführten Einstellungen.

// .hosts.yaml

// Configure your TYPO3 staging site
staging.typo3site.com:
  host: staging.typo3site.com
  stage: staging
  branch: staging
  user: username
  identityFile: ~
  deploy_path: /var/www/yourpath

// Configure your TYPO3 production site
typo3site.com:
  host: typo3site.com
  stage: production
  branch: master
  user: username
  identityFile: ~
  deploy_path: /var/www/yourpath

Schritt 2. TYPO3-Bereitstellung vorbereiten

Erstellen Sie in Ihrem Stammordner des Projekts die Datei deploy.php, die ein funktionierendes Beispiel für den TYPO3-Deployer darstellt. Jeder Schritt ist mühelos und leicht zu verstehen.

 

<?php

namespace Deployer;

# Call default recipe
require 'recipe/common.php';

# Project name
set('application', 'your-typo3-site');

# Define Git-Repository
set('repository', 'git@gitlab.com:yourcompany/yourtypo3project.git');

# [Optional] Allocate tty for git clone. The default value is false.
set('git_tty', true);

# Set maximum releases backup
set('keep_releases', 5);

# To solve this issue: Can't detect http user name. Please set up the `http_user` config parameter.
# set('http_user', 'www-data');
# set('writable_mode', 'chmod');
# set('use_relative_symlink', '0');

# Set Server
inventory('.hosts.yaml');

# DocumentRoot / WebRoot for the TYPO3 installation
set('typo3_webroot', 'public');

# Shared directories
set('shared_dirs', [
   '{{typo3_webroot}}/fileadmin',
   '{{typo3_webroot}}/typo3temp',
   '{{typo3_webroot}}/uploads',
]);

# Shared files
set('shared_files', [
   '{{typo3_webroot}}/.htaccess'
]);

# Writeable directories
set('writable_dirs', [
   'config',
   'var',
   '{{typo3_webroot}}/fileadmin',
   '{{typo3_webroot}}/typo3temp',
   '{{typo3_webroot}}/typo3conf',
   '{{typo3_webroot}}/uploads'
]);

# Main TYPO3 task
task('deploy', [
   'deploy:info',
   'deploy:prepare',
   'deploy:lock',
   'deploy:release',
   'deploy:update_code',
   'deploy:shared',
   'deploy:vendors',
   'deploy:writable',
   'deploy:symlink',
   'deploy:unlock',
   'cleanup',
])->desc('Deploy your project');
after('deploy', 'success');

# [Optional] If the deployment fails automatically unlock.
after('deploy:failed', 'deploy:unlock');

Anmerkung:
Das obige Beispiel zeigt, dass der TYPO3 Deployment-Code mit TYPO3 v10 und der Composer-basierten TYPO3 Installation gut getestet ist. Bitte nehmen Sie Änderungen vor, um ihn mit Ihrer anderen Art von TYPO3-Installation kompatibel zu machen.

Step 4. That’s it, Now let’s Deploy TYPO3!

// Run this command as test-drive deployment to your TYPO3 staging site
dep deploy staging

Aha, Erhalten Sie SSH-Authentifizierungsfehler?

Kein Problem! Eine Sache, die Sie verstehen müssen, Deployer ist eine Brücke, um Ihr Git-Repository und Ihren Server zu verbinden. Lassen Sie uns die SSH-Authentifizierung für Ihr Git und Ihren Server konfigurieren.

Schritt 1. Generieren Sie den SSH-Schlüssel auf Ihrem lokalen Server (falls Sie keinen haben)

ssh-keygen

Schritt 2. Legen wir Ihre SSH-Schlüssel auf den Staging- und Produktionsserver

ssh-copy-id -i ~/.ssh/id_rsa.pub username@yoursite.com

Schritt 3. Konfigurieren Sie den SSH-Schlüssel für Git

Zum Beispiel in Gitlab, gehen Sie zu https://gitlab.com/profile/keys und fügen Sie den öffentlichen Schlüssel Ihres Staging- und Produktionsservers hinzu.

Gebrauchsfertige TYPO3-Bereitstellungspakete

Das Gute daran ist, dass einige Leute versuchen, TYPO3-Deployer-Pakete wie unten beschrieben zu entwickeln und zu pflegen. Sie sollten versuchen, die Vorteile solcher vorgefertigten TYPO3 Deployment-Pakete zu nutzen.

#TYPO3-Bereitstellungs-Toolkit Nr. 1 (von Oliver Hader)

Oliver Hader - Der Leiter des TYPO3-Sicherheitsteams initiierte das TYPO3 Deployer-Toolkit mit einer Vielzahl von Optionen zur Automatisierung der TYPO3-Bereitstellung.

// Install TYPO3 deployer toolkit
composer req --dev oliver-hader/typo3-deployer

// Configure deploy.php & .host.yml

// Deploy your TYPO3 project
vendor/bin/dep deploy production

#2 Informationen zum TYPO3-Bereitsteller (von Thomas Löffler)

Der TYPO3.org-Mann - Thomas Löffler entwickelte eine coole TYPO3-Extension, um Informationen über den letzten Einsatz in der Systeminformationsleiste - im TYPO3-Backend - anzuzeigen.

// Install EXT:deployer_information
composer req spooner/deployer-information

// How to configure your deployment
// You don't need to do anything. The extension looks for the default folder and files of a release.

#3 TYPO3-Bereitstellungsrezept (von Helmut Hummel)

Helmut Hummel hat ein Rezept für den Einsatz von TYPO3 erstellt. Es gibt keine Dokumentation, aber wie bei anderen Projekten von Helmut Hummel sollte es fantastisch sein, Probieren Sie es aus :)

Deployer für TYPO3 erweitert (von Sourcebroker)

Sourcebroker, Einer der sehr aktiven Jungs auf dem TYPO3 Deployer, sie haben eine ausgezeichnete Lösung für den TYPO3 Deployer für Code, Datenbank, Medien-Assets, etc. geschaffen. Ich habe einen kurzen Versuch unternommen, und es funktioniert fantastisch.

Dieses Paket dient einer Deploy-Aufgabe, um das TYPO3 CMS mit Deployer (deployer.org) einzusetzen. 

// Installation deployer-extended-typo3
composer require sourcebroker/deployer-extended-typo3

// Put below code at beginning of your deploy.php
require_once(__DIR__ . '/vendor/sourcebroker/deployer-loader/autoload.php');
new \SourceBroker\DeployerExtendedTypo3\Loader();
// Run deploy
dep deploy beta

Arbeitsbeispiel eines TYPO3-Einsatzes

<?php

namespace Deployer;

require_once(__DIR__ . '/vendor/sourcebroker/deployer-loader/autoload.php');
new \SourceBroker\DeployerExtendedTypo3\Loader();

set('repository', 'git@github.com:sourcebrokergit/t3base10.git');
set('bin/php', '/home/www/t3base10-public/.bin/php');
set('web_path', 'public/');

host('live')
    ->hostname('vm-dev.example.com')
    ->user('deploy')
    ->set('branch', 'master')
    ->set('public_urls', ['https://live-t3base10.example.com'])
    ->set('deploy_path', '/home/www/t3base10-public/live');

host('beta')
    ->hostname('vm-dev.example.com')
    ->user('deploy')
    ->set('branch', 'master')
    ->set('public_urls', ['https://beta-t3base10.example.com'])
    ->set('deploy_path', '/home/www/t3base10-public/beta');

host('local')
    ->hostname('local')
    ->set('deploy_path', getcwd())
    ->set('vhost_nocurrent', true)
    ->set('public_urls', ['https://t3base10.local.site']);

Hilfreiche Tipps & Tricks für den Einsatz von TYPO3

#1 Wie debuggt man den TYPO3 Deployer?

Wann immer Sie mit einem zufälligen, unbekannten Fehler nicht weiterkommen, sollten Sie während der Ausführung Ihres Deployments versuchen, mit Hilfe der Varianzdebugging-Methoden des Deployments in die Tiefe zu gehen.

// provides default installation view with the least information 
dep deploy -v

// provides some more details as compared with the default mode 
dep deploy -vv

// provides a detailed view of the installation output
dep deploy -vvv

#2 Wie wird TYPO3 in einer bestimmten Phase eingesetzt?

Wie wir im obigen TYPO3-Deployment-Beispiel gesehen haben, können Sie mehrere Deployments mit Staging, Produktion usw. konfigurieren,

// To deploy to the TYPO3 staging server

dep deploy stage

// To deploy to the TYPO3 production server

dep deploy production

#3 Gibt es eine Möglichkeit, den TYPO3-Einsatz zurückzusetzen?

Ja, das Deployer-Tool ist unglaublich; Sie können es mit einem einfachen Rollback-Befehl schnell bereitstellen.

// Rollback your last run TYPO3 deploy
dep rollback

#4 Release-Management für TYPO3-Bereitstellung

Der Bereitsteller hat mit der Aufgabe keep_releases mehrere Release-Ordner erstellt.

// Keep maxim five release and other will old-releases keep deleted
set('keep_releases', 5);

// To clean-up all old releases
dep cleanup

#5 Verfügbare Deployer-Rezepte

PHP-Bereitsteller haben eine großartige Gemeinschaft, die ständig Rezepte für die Bereitstellung vorbereitet.

// Install all Deployer Recipes

composer require deployer/recipes --dev

// Include particular recipes in your Deploy.php

require 'recipe/typo3.php';

#6 TYPO3-Bereitstellung ohne Ausfallzeiten

Eines meiner Lieblingsfeatures ist der Einsatz von TYPO3 ohne Ausfallzeiten. Abhängig von der Größe Ihrer TYPO3-Website kann es erforderlich sein, Code und Assets von Git auf Ihrem Server bereitzustellen.

Eine einfache Lösung ist, Ihre Domain auf /current folder zu zeigen.

#7 Auf dem neuesten Stand bleiben Verleiher

Die Deployer-Gemeinschaft veröffentlicht kontinuierlich neue Versionen. Mit den einfachen Befehlen unten können Sie sich weiter informieren und den Deployer auf dem neuesten Stand halten.

// To update the minor version of the Deployer run,
dep self-update

// To update the Deployer to major release version run,
dep self-update --upgrade

#Nr. 8 Erweiterte Automatisierung = Bereitsteller + Git-Release-Management

Ich schlage vor, dass Sie den Deployer in den Git-Release-Manager integrieren, um einen CI/CD-Ansatz vollständig zu implementieren. Beispiel: Wenn Sie Gitlab verwenden, sollten Sie den Deployer in Gitlab integrieren;

Schritt 1. Bereiten Sie .gitlab-ci.yml mit der Konfiguration der Installation, Konfiguration usw. des PHP-Deployers vor.

Schritt 2. Fügen Sie auch den Deploy-Befehl deploy setup in die Gitlab-CI-Datei ein.

Schritt 3. Wann immer Sie den Tag freigeben, wird Ihre TYPO3-Site automatisch auf dem Server bereitgestellt.

In Zukunft werde ich sicher einen solchen Schritt-für-Schritt-Anleitung separaten Blog schreiben, bleiben Sie dran, indem Sie unseren TYPO3-Blog abonnieren.

Schlussfolgerung

Vielen Dank für die Lektüre des Artikels.

Ich hoffe, er hat Ihnen gefallen und Sie haben die Einsatzmöglichkeiten von TYPO3 + Deployer kennengelernt. Hier sind einige Schlusspunkte.

  • Verstehen Sie die zugrunde liegende Architektur des Deployer-Tools, z.B.: Es wird von GIT bis SERVER eingesetzt.
  • Installieren und konfigurieren, um mit dem "Deploy"-Befehl zu beginnen.
  • Bereiten Sie Ihr erstes TYPO3-Deploy-Projekt für den Testlauf auf Ihrem Staging-Server vor (und üben Sie weiter).
  • Lernen Sie die Struktur von deploy.php kennen, damit Sie es in Zukunft Ihren Bedürfnissen entsprechend anpassen können.
  • Ich empfehle dringend, einen Versuch mit gebrauchsfertigen TYPO3 Deploy-Paketen zu unternehmen.
  • Haben Sie irgendwelche Probleme bei der Installation, Konfiguration und dem Testen Ihres TYPO3-Deployer-Projekts? Ich beantworte gerne alle Fragen im Kommentarfeld.

Viel Spaß beim TYPO3-Einsatz!

Post a Comment

×
Captcha Code Kann das Bild nicht gelesen werden? Klicken Sie hier, um zu aktualisieren
  • user
    mespana 2020-12-24 um 3:56 am
    Hello Mr Sanjay, thanks for this article, it has help me a lot, I have been looking, learning and testing a lot for I learned typo3 a decade ago and therefore this real example was very helpful and has worked fine (just one minor correction, one comma too much, in the last line #shared directories).
    If may be possible to you to post some real examples of how to export the db, as far as i remember, this was usually the easiest (in opposite to transfering the complete finished by ftp, which has been easily done now) however not to export the db turns out a nightmare ... well, thanks for your help anyway and have a good end of year, regards from Heidelberg! Mariana
  • user
    Adelar Kampf 2020-08-07 um 1:15 pm
    I always loved your articles Sanjay. Indeed this is a good automated deployment article. Thanks so much for putting all this together. Great tips and tools mentioned.
  • user
    Emilie Lasker 2020-08-07 um 1:11 pm
    Great article on the preparation for automated deployments, these are often overlooked steps and can make or break the TYPO3 deployment set up. Thanks for sharing and looking forward to more of the blogs!