TYPO3 CMS mit Nginx auf AlmaLinux 9 installieren

TYPO3 ist ein kostenloses und quelloffenes Content Management System für Unternehmen. Es bietet zahlreiche Funktionen auf Enterprise-Niveau, wie z.B. ein skalierbares CMS mit Multisite-Unterstützung, mehrsprachige Installationen, starke Sicherheitsimplementierungen, ist rasend schnell und kann überall eingesetzt werden.

Mit TYPO3 CMS kannst du flexible und zuverlässige Websites erstellen. Hinter dem TYPO3 CMS steht eine lebendige professionelle Community. Das TYPO3 CMS ist ein Plug-in-fähiges Content Management System mit einer anpassungsfähigen und entkoppelten Architektur.

In dieser Anleitung zeige ich dir Schritt für Schritt, wie du TYPO3 CMS auf einem AlmaLinux 9 installierst. Wir werden TYPO3 CMS mit dem Webserver Nginx, dem Datenbankserver MariaDB und PHP-FPM installieren.

Voraussetzungen

Bevor du fortfährst, solltest du sicherstellen, dass du über die folgenden Voraussetzungen verfügst:

  • Einen AlmaLinux 9 Server – In diesem Beispiel wird ein Server mit dem Hostnamen almalinux9 verwendet.
  • Einen Nicht-Root-Benutzer mit sudo-Root-Rechten.
  • Einen Domainnamen, der auf die IP-Adresse des Servers zeigt.

Installieren der Abhängigkeiten

In den folgenden Schritten installierst du die Paketabhängigkeiten für TYPO3 CMS:

  • Nginx: Als Webserver.
  • MariaDB: Als Datenbankserver.
  • PHP-FPM: In diesem Beispiel wird PHP 8.1 für TYPO3 CMS verwendet.
  • Composer: Eine Abhängigkeitsverwaltung für PHP-Anwendungen.

Jetzt können wir loslegen.

Führe zunächst den folgenden Befehl aus, um die Repositories EPEL und Remi zu deinem System hinzuzufügen. Das Remi-Repository bietet mehrere Versionen von PHP-Paketen und einige zusätzliche PHP-Erweiterungen, die im Standard-Appstream-Repository nicht verfügbar sind.

sudo dnf epel-release
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm

Gib y ein, um die Installation zu bestätigen und drücke ENTER.

Hinzufügen des EPEL-Repositorys.

epel repository hinzufügen

Hinzufügen des PHP Remi Repository für RHEL 9.

remi repository hinzufügen

Führe nun den folgenden Befehl aus, um das Standardmodul des PHP-Repositorys zurückzusetzen und das PHP 8.1 Modul aus dem Remi-Repository zu aktivieren.

sudo dnf module reset php -y
sudo dnf module enable php:remi-8.1 -y

php8.1 remi repositry aktivieren

Als Nächstes führst du den folgenden dnf-Befehl aus, um die Paketabhängigkeiten für TYPO3 CMS zu installieren. Wenn du dazu aufgefordert wirst, gibst du zur Bestätigung y ein und drückst dann ENTER.

sudo dnf install nginx mariadb-server composer ImageMagick php-fpm php-mysqlnd php-gd php-curl php-json php-intl php-bcmath php-zip php-apcu php-mbstring php-fileinfo php-xml php-soap

Installieren von Abhängigkeiten

Nachdem die Abhängigkeiten installiert sind, führe den Befehl systemctl aus, um die wichtigsten Dienste wie Nginx, MariaDB und PHP-FPM zu starten und zu aktivieren.

sudo systemctl enable --now nginx mariadb php-fpm

Dienste starten und aktivieren

Überprüfe dann die Dienste mit dem folgenden Befehl, um sicherzustellen, dass alle diese Dienste laufen.

sudo systemctl status nginx mariadb php-fpm

Wenn der Dienst läuft, solltest du die Ausgabe active (läuft) sehen. Das Beispiel unten zeigt, dass der Nginx-Dienst läuft.

Dienste überprüfen

Zum Schluss führst du den folgenden Befehl aus, um sicherzustellen, dass Composer installiert ist und überprüfst seine Version.

sudo -u nginx composer -V

Zum Zeitpunkt der Erstellung dieses Artikels ist Composer v2.5.5 über das EPEL-Repository installiert.

Composer-Version prüfen

Einrichten von Firewalld

Nachdem du die Paketabhängigkeiten installiert hast, musst du als Nächstes die Firewalld einrichten und sowohl das HTTP- als auch das HTTPS-Protokoll über sie öffnen.

Führe den Befehl firewall-cmd aus, um sowohl HTTP- als auch HTTPS-Dienste zu öffnen. Lade dann die Firewalld neu, um die Änderungen zu übernehmen.

sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload

Überprüfe nun die Liste der offenen Ports und Dienste in der Firewalld mit dem folgenden Befehl.

sudo firewall-cmd --list-all

Im Abschnitt Dienste solltest du sehen, dass sowohl HTTP als auch HTTPS aktiviert sind.

firewalld einrichten

MariaDB Server einrichten

Im folgenden Abschnitt sicherst du den MariaDB-Server und erstellst eine neue Datenbank und einen neuen Benutzer, der von der TYPO3 CMS-Installation verwendet wird.

Führe zunächst den Befehl mariadb-secure-installation aus, um deine MariaDB-Installation zu sichern.

sudo mariadb-secure-installation

Während des gesamten Prozesses wirst du aufgefordert, die MariaDB-Serverkonfiguration anzugeben. Gib Y ein, um den Schritt zu bestätigen.

  • Stellst du die MariaDB Root-Authentifizierung auf unix_socket? Gib n ein.
  • MariaDB Root-Passwort einrichten? Gib y ein, gib das neue Passwort ein und wiederhole den Vorgang.
  • Remote-Anmeldung für den Root-Benutzer deaktivieren? Gib y ein.
  • Standard-Datenbanktest entfernen? Gib erneut y ein.
  • Anonymen Standardbenutzer entfernen? Gib zur Bestätigung y ein.
  • Tabellenberechtigungen neu laden, um die Änderungen zu übernehmen? Gib y ein.

Sobald die MariaDB gesichert ist, melde dich mit dem unten stehenden Befehl mariadb bei der MariaDB an. Wenn du nach deinem Passwort gefragt wirst, gibst du dein MariaDB-Root-Passwort ein.

sudo mariadb -u root -p

Nachdem du dich bei MariaDB angemeldet hast, führe die folgenden Abfragen aus, um eine neue Datenbank typo3db, einen Benutzer typo3 und das Passwort typo3password zu erstellen.

CREATE DATABASE typo3db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON typo3db.* to typo3@localhost IDENTIFIED BY 'typo3password';
FLUSH PRIVILEGES;

Datenbank und Benutzer anlegen

Als Nächstes führst du die folgende Abfrage aus, um die Rechte des MariaDB-Benutzers typo3 zu überprüfen und sicherzustellen, dass der Benutzer auf die Datenbank typo3db zugreifen kann.

SHOW GRANTS FOR typo3@localhost;

In der Ausgabe solltest du sehen, dass der MariaDB-Benutzer typo3 auf die Datenbank typo3db zugreifen kann.

Benutzerprivilegien anzeigen

Gib quit ein, um den MariaDB-Server zu verlassen und den Schritt abzuschließen.

PHP-FPM einrichten

Nachdem der MariaDB-Server konfiguriert ist, musst du im nächsten Schritt die PHP-FPM-Installation einrichten. Du wirst die PHP-FPM-Installation mit dem Nginx-Webserver verbinden.

Führe zunächst den folgenden Befehl aus, um die Standardzeitzone für dein System einzurichten.

sudo timedatectl set-timezone Europe/Stockholm

Öffne nun die PHP-Konfiguration /etc/php.ini mit dem Editorbefehl vim.

sudo vim /etc/php.ini

Entferne das Kommentarzeichen im Parameter date.timezone und ändere den Wert in die richtige Zeitzone.

date.timezone = Europe/Stockholm

Erhöhe und aktiviere einige der PHP-Parameter wie folgt. Passe den Parameter memory_limit an den aktuellen Speicherplatz an, den du hast.

memory_limit = 512M
max_execution_time = 300
max_input_vars = 2000

Erhöhe nun die Parameter post_max_size und upload_max_filesize auf 30 MB.

post_max_size = 30M
upload_max_filesize = 30M

Speichere die Datei und beende den Editor, wenn du fertig bist.

Als Nächstes öffnest du die PHP-FPM-Pool-Konfiguration /etc/php-fpm.d/www.conf mit dem vim-Editor.

sudo vim /etc/php-fpm.d/www.conf

Ändere den Standardwert für die Parameter user und group auf nginx wie folgt:

user = nginx
group = nginx

Speichere die Datei und beende den Editor.

Führe nun den folgenden Befehl aus, um den PHP-FPM-Dienst neu zu starten und die Änderungen zu übernehmen. Überprüfe dann den PHP-FPM, um sicherzustellen, dass er läuft.

sudo systemctl restart php-fpm
sudo systemctl status php-fpm

Wenn er läuft, solltest du eine Ausgabe wie diese erhalten:

php-fpm konfigurieren

Außerdem kannst du PHP-FPM auch überprüfen, indem du die Standard-Socket-Datei für PHP-FPM überprüfst, nämlich /run/php-fpm/www.sock. Führe den folgenden ss-Befehl aus, um die Liste der verfügbaren Sockets auf deinem System zu erhalten und filtere die Ausgabe so, dass nur www.sock angezeigt wird.

ss -pl | grep www.sock

Wenn PHP-FPM läuft, solltest du sehen, dass die standardmäßige PHP-FPM-Socket-Datei /run/php-fpm/www.sock verfügbar ist:

php-fpm-Socke prüfen

Herunterladen von TYPO3 CMS

TYPO3 CMS kann auf verschiedene Arten installiert werden. Für diese Demo wirst du TYPO3 CMS über den Composer Paketmanager installieren.

Führe den folgenden Befehl aus, um ein neues Verzeichnis /var/www/typo3 zu erstellen. Dieses wird als Zielverzeichnis für die TYPO3 CMS-Installation verwendet

mkdir -p /var/www/typo3

Als Nächstes führst du den folgenden Befehl aus, um den Eigentümer des Verzeichnisses /var/www/typo3 auf den Benutzer nginx zu ändern und dem Eigentümer des Verzeichnisses Lese- und Schreibrechte zu gewähren.

sudo chown -R nginx:nginx /var/www/typo3
sudo chmod u+rw /var/www/typo3

Wechsle nun in das Verzeichnis /var/www/typo3 und führe den unten stehenden Composer-Befehl aus, um den Quellcode von TYPO3 CMS herunterzuladen.

cd /var/www/typo3
sudo -u nginx composer create-project typo3/cms-base-distribution:^12 .

Wenn die Installation läuft, solltest du den Prozess wie folgt sehen:

TYPO3 CMS herunterladen und installieren

Nachdem TYPO3 heruntergeladen wurde, führe den folgenden Befehl aus, um die Liste der Dateien und Verzeichnisse im Verzeichnis /var/www/typo3 zu überprüfen.

ls -lah /var/www/typo3

Du solltest ähnliche Dateien und Verzeichnisse wie diese sehen:

list files TYPO3 CMS source code

Zum Schluss führst du die TYPO3 CMS-Binärdatei aus, um die Konfiguration zu starten, und wirst nach einigen Konfigurationen gefragt.

sudo -u nginx ./vendor/bin/typo3 setup

Du wirst nach einigen TYPO3 CMS-Konfigurationen gefragt.

  • Gib den Datenbanktreiber mysqli ein.
  • Gib den Datenbankbenutzer, das Passwort, den Port und den Host ein.
  • Gib nun den Namen der Datenbank ein, die für TYPO3 CMS verwendet werden soll. In diesem Beispiel lautet der Datenbankname typo3db.
  • Gib den neuen Admin-Benutzer, die E-Mail und das Passwort für TYPO3 CMS ein.
  • Für den Projektnamen und die grundlegende Website-URL drückst du ENTER, um sie als Standard zu belassen.

Sobald die Konfiguration von TYPO3 CMS abgeschlossen ist, solltest du die Meldung„Congratulations – TYPO3 Setup is done“ sehen.

TYPO3 CMS über die Kommandozeile installieren

Konfigurieren des Nginx Server Blocks für TYPO3 CMS

Nachdem du TYPO3 CMS installiert und konfiguriert hast, richtest du den Nginx Server Block für TYPO3 CMS ein. Bevor du beginnst, vergewissere dich, dass der Domainname auf die IP-Adresse deines Servers zeigt.

Erstelle eine neue Nginx-Serverblock-Konfiguration/etc/nginx/conf.d/typo3.conf mit vim.

sudo vim /etc/nginx/conf.d/typo3.conf

Füge die folgende Konfiguration ein und achte darauf, dass du den Zieldomainnamen im Parameter server_name änderst.

server {
    listen       80;
    server_name  typo3.hwdomain.io;

root         /var/www/typo3/public;
index index.php;

# Load configuration typo3.conf.
include /etc/nginx/default.d/typo3-nginx.conf;
}

Speichere und beende die Datei, wenn du fertig bist.

Als Nächstes erstellst du mit dem unten stehenden vim-Befehl eine weitere Konfiguration /etc/nginx/default.d/typo3-nginx.conf.

sudo vim /etc/nginx/default.d/typo3-nginx.conf

Füge die folgende Konfiguration in die Datei ein. Dies ist die Hauptkonfiguration von Nginx für TYPO3 CMS.

# Compressing resource files will save bandwidth and so improve loading speed, especially for users
# with slower internet connections. TYPO3 can compress the .js and .css files for you.
# *) Set $GLOBALS['TYPO3_CONF_VARS']['BE']['compressionLevel'] = 9 for the Backend
# *) Set $GLOBALS['TYPO3_CONF_VARS']['FE']['compressionLevel'] = 9 together with the TypoScript properties
#    config.compressJs and config.compressCss for GZIP compression of Frontend JS and CSS files.
location ~ \.js\.gzip$ {
    add_header Content-Encoding gzip;
    gzip off;
    types { text/javascript gzip; }
}
location ~ \.css\.gzip$ {
    add_header Content-Encoding gzip;
    gzip off;
    types { text/css gzip; }
}
# TYPO3 - Rule for versioned static files, configured through:
# - $GLOBALS['TYPO3_CONF_VARS']['BE']['versionNumberInFilename']
# - $GLOBALS['TYPO3_CONF_VARS']['FE']['versionNumberInFilename']
if (!-e $request_filename) {
rewrite ^/(.+)\.(\d+)\.(php|js|css|png|jpg|gif|gzip)$ /$1.$3 last;
}

# TYPO3 - Block access to composer files
location ~* composer\.(?:json|lock) {
deny all;
}

# TYPO3 - Block access to flexform files
location ~* flexform[^.]*\.xml {
deny all;
}

# TYPO3 - Block access to language files
location ~* locallang[^.]*\.(?:xml|xlf)$ {
deny all;
}

# TYPO3 - Block access to static typoscript files
location ~* ext_conf_template\.txt|ext_typoscript_constants\.txt|ext_typoscript_setup\.txt {
deny all;
}

# TYPO3 - Block access to miscellaneous protected files
location ~* /.*\.(?:bak|co?nf|cfg|ya?ml|ts|typoscript|tsconfig|dist|fla|in[ci]|log|sh|sql|sqlite)$ {
deny all;
}

# TYPO3 - Block access to recycler and temporary directories
location ~ _(?:recycler|temp)_/ {
deny all;
}

# TYPO3 - Block access to configuration files stored in fileadmin
location ~ fileadmin/(?:templates)/.*\.(?:txt|ts|typoscript)$ {
deny all;
}

# TYPO3 - Block access to libraries, source and temporary compiled data
location ~ ^(?:vendor|typo3_src|typo3temp/var) {
deny all;
}

# TYPO3 - Block access to protected extension directories
location ~ (?:typo3conf/ext|typo3/sysext|typo3/ext)/[^/]+/(?:Configuration|Resources/Private|Tests?|Documentation|docs?)/ {
deny all;
}

location / {
try_files $uri $uri/ /index.php$is_args$args;
}

location = /typo3 {
rewrite ^ /typo3/;
}

location /typo3/ {
absolute_redirect off;
try_files $uri /typo3/index.php$is_args$args;
}

location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_buffer_size 32k;
fastcgi_buffers 8 16k;
fastcgi_connect_timeout 240s;
fastcgi_read_timeout 240s;
fastcgi_send_timeout 240s;

# this is the PHP-FPM upstream - see also: https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/#connecting-nginx-to-php-fpm
fastcgi_pass         unix:/run/php-fpm/www.sock;
fastcgi_index        index.php;
include              fastcgi.conf;
}

Speichere und schließe die Datei, wenn du fertig bist.

Führe nun den folgenden Befehl aus, um sicherzustellen, dass du die richtige Nginx-Konfiguration hast. Starte dann den Nginx-Dienst neu, um die Änderungen zu übernehmen.

sudo nginx -t
sudo systemctl restart nginx

Nachdem der Befehl ausgeführt wurde, solltest du die Ausgabe„syntax ok – test is successful“ erhalten und deine TYPOC3 CMS-Installation sollte zugänglich sein.

TYPO3 CMS mit SSL/TLS absichern

Im folgenden Abschnitt wirst du deine TYPO3 CMS-Installation mit SSL/TLS-Zertifikaten absichern, die von Letsencrypt generiert werden. Um das zu erreichen, musst du Certbot auf deinem System installieren.

Führe den folgenden dnf-Befehl aus, um Certbot und das Certbot-Plugin für Nginx zu installieren. Gib y ein, um die Installation zu bestätigen, und drücke dann ENTER.

sudo dnf install certbot python3-certbot-nginx

certbot installieren

Führe nun den folgenden Befehl aus, um neue SSL-Zertifikate von Letsencrypt für das TYPO3 CMS zu generieren. Achte darauf, dass du den Domainnamen und die E-Mail-Adresse änderst.

sudo certbot --nginx --agree-tos --no-eff-email  --redirect --hsts --staple-ocsp --email alice@hwdomain.io -d typo3.hwdomain.io

Wenn der Prozess reibungslos verläuft, werden die neuen SSL-Zertifikate im Verzeichnis /etc/letsencrypt/live/typo3.hwdomain.io erzeugt. Außerdem wird die Serverblockkonfiguration für TYPO3 CMS automatisch mit aktiviertem SSL über certbot konfiguriert.

Starte deinen Webbrowser und rufe die TYPO3 CMS-Installationsadresse auf (z.B.: https://typo3.hwdomain.io/). Du solltest den Anmeldebildschirm von TYPO3 CMS erhalten.

Gib den Administrator-Benutzer und das Passwort ein, die du erstellt hast, und klicke dann auf Login.

Anmeldung bei TYPO3 CMS

Wenn du den richtigen Administrator-Benutzer und das richtige Passwort hast, sollte dir das TYPO3 CMS-Administrator-Dashboard wie folgt angezeigt werden:

TYPO3 CMS Admin Dashboard

Klicke oben rechts im Menü auf das Info-Symbol und du solltest die Details zu den Software-Stacks erhalten, die du derzeit für die TYPO3 CMS-Installation verwendest. In dieser Demo ist die installierte Version von TYPO3 CMS v12 mit Nginx Webserver, MariaDB Datenbankserver und PHP-FPM 8.1.

typo3 cms installation info

Fazit

Du bist fertig! Du hast die Installation von TYPO3 CMS auf deinem AlmaLinux 9 Server mit MariaDB-Datenbankserver, PHP-FPM und Nginx-Webserver abgeschlossen. Außerdem hast du deinen Einsatz mit SSL/TLS-Zertifikaten von Letsencrypt abgesichert. Nun kannst du eine neue Website mit TYPO3 CMS erstellen.

Das könnte dich auch interessieren …