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.
Hinzufügen des PHP Remi Repository für RHEL 9.
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
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
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
Ü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.
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.
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.
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;
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.
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:
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:
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:
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:
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.
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
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.
Wenn du den richtigen Administrator-Benutzer und das richtige Passwort hast, sollte dir das TYPO3 CMS-Administrator-Dashboard wie folgt angezeigt werden:
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.
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.