Wir starten mit der Wahl der fraglichen Linux-Distribution und Technik für das Verteilen der Technik an Trainees.

Debian 12 Hyper-V VM für CMSOD Seminare - hier: TYPO3 v13 Test
Debian 12 Hyper-V VM für CMSOD Seminare - hier: TYPO3 v13 Test

Linux-Distro

Ich nutze seit vielen Jahren Debian für alle Webtechnik-Umgebungen und Services. Und da man hinsichtlich der LTS-Unterstützungen mit aktuell 5 Jahren (https://wiki.debian.org/LTS) deutlich hinter den 10 Jahren eines Ubuntu Server hinterher ist, muss der geneigte Debian Administrator und Nutzer eben doch "ab und zu" frische Installationen erstellen, wenn man nicht zum kostenpflichtigen Freeixan ELTS (https://www.freexian.com/lts/debian/) greifen möchte.

Als Trainer in diesen Bereichen habe ich mit entsprechenden System-Auffrischungen keinerlei Probleme und schätze die technische Umsetzung jedes Mal wieder auf das Neue.

Wir erstellen uns also ein klassisches LAMP-System. Die Standard-PHP-Version für Debian 12 Bookworm ist PHP 8.2. Diese Version wird seitens der PHP Entwicklergemeinschaft bis zum 31. Dezember 2026 als Standard-Packages geplegt. Danach stehen unter Debian - wie auch schon aktuell - 3rd-Party Repos mit neueren PHP-Versionen 8.3 (und aktuell/später auch 8.4) zur Verfügung (Beispielhafte Anleitung mit Sury Packages: https://php.watch/articles/php-8.3-install-upgrade-on-debian-ubuntu). Zum Abschluss hier noch ein Link mit einer Gegenüberstellung von PHP als Apache Mod vs. php-fpm (Fast CGI process manager) auf Reddit. In der folgenden Anleitung installiere ich das Apache mod_php. Die FPM Variante hat zusätzliche Konfigurationen, was einen Unterschied zu meinen Windows-basierten XAMPP-CMSOD Umgebungen darstellt.

Debian Hyper-V VM

In vielen Trainingsumgebung habe ich Zugriff auf Virtualisierungen mit Hyper-V für die Trainees. Daher greife ich hier gerne zum Hyper-V-Manager und erstelle die gewünschten Maschinen/VMs. Die VMs werden mit Standard-Konfigurationen erzeugt (z.B. Generation 2, kein Secure Boot, Default-Switch, ...) und dann (ohne Snapshots) exportiert und als ZIPs komprimiert und verteilt.

Authentifizierung: für meine Systeme entscheide ich mich häufig für folgende Authentifizierung:
User seminar / Password seminar

LAMP Installation

Wir beginnen nach einem Fresh Install mit Aktualisierungen und Basis-Installationen von Tools und Grunddiensten. Manche Software - wie der openSSH Server - sind bereits durch die Basisinstallation (ca. 127 Packages) erzeugt worden.

Basispakete

Wir installieren die nötigen Grundpakete - eine Basissoftwareausstattung:

sudo apt update
sudo apt upgrade
sudo apt install vim mc tree git curl wget fzf ripgrep ranger bat openssh-server -y                      # tools
sudo apt install lsb-release ca-certificates apt-transport-https software-properties-common gnupg2 -y    # system
sudo apt update && sudo apt upgrade -y                                                                   # update

Und natürlich sind ein paar der Pakete auch persönlich geprägt.

PHP - bei frischen Installationen ist kein PHP installiert. Ansonsten einfach checken:

dpkg -l | grep php

Für weitere Analytik kann man mal schnell die verfügbar PHP Version checken:

apt search php-cli
(Ausgabe:)Sortierung… Fertig
Volltextsuche… Fertig
php-cli/stable 2:8.2+93 all
 command-line interpreter for the PHP scripting language (default)

Die Versionen können natürlich abweichen.

PHP und Webserver Apache2

PHP Version 8.2: Wir installieren also die PHP Version 8.2 und legen jetzt los und installieren die gewünschte PHP Basistechnik, womit wir auch gleich den Webserver Apache2 und das libapache2-mod-php8.2 installiert bekommen.

sudo apt install php8.2

Wir checken schnell die PHP Version und den Status des Apache2 Webservers:

php --version
(Ausgabe:)
PHP 8.2.26 (cli) (built: Nov 25 2024 17:21:51) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.26, Copyright (c) Zend Technologies
 with Zend OPcache v8.2.26, Copyright (c), by Zend Technologies

sudo systemctl status apache2.service

Tipp: die Nachricht des Webservers mit Hinweis AH0058 kann mit der Zeile ServerName hv-debcmsodsrv in Konfiguration /etc/apache2/apache2.conf korrigiert werden.

Bevor wir den Apache2 Webserver restarten|reloaden sollten wir die Konfiguration prüfen:

sudo apachectl configtest
sudo systemctl restart apache2.service

Wir sollten für den configtest immer ein "OK" zurückbekommen.

PHP-Module installieren: Die PHP Technik muss vor Allem für die sehr anspruchsvolle TYPO3 Entwicklungsumgebung vervollständigt werden. Eine Orientierung und Anleitung kann man z. B. unter TYPO3 System Requirements analysieren.

sudo apt install php8.2 php8.2-mysql libapache2-mod-php8.2 php8.2-curl php8.2-gd php8.2-mbstring \
                 php8.2-xml php8.2-soap php8.2-intl php8.2-zip curl php-pear

Jetzt gleich noch ein paar Apache2 Module aktivieren und den Apache2 Server neu starten.

sudo a2enmod expires
sudo a2enmod rewrite
sudo a2enmod headers
sudo systemctl restart apache2.service

PHP-Konfiguration: Als nächstes passen wir - wieder wegen TYPO3 - ein paar PHP-Konfigurationen an: : /etc/php/8.2/apache2/php.ini 

# memory_limit set to at least 128M -> 512M
memory_limit = 512M
# max_execution_time set to at least 30 -> 240
max_execution_time = 240
# max_input_vars set to at least 1500 (von 1000 und auskommentiert)
max_input_vars = 1500
# und ich schlage noch vor
post_max_size = 20M (statt 8M)
upload_max_filesize = 20M (statt 2M)

Bitte alle Konfigurationen mittels eines kleinen phpinfo-Skripts checken: /var/www/html/phpinfo.php

<?php
    phpinfo();
?>

Die Ausgaben der PHPInfo bitte sauber überprüfen und mit Strg + F durchsuchen / checken.

Apache2 - selfsigned Certificates

Wir wollen bei den Zertifikaten für die SSL (https) Umsetzungen auf selbstsignierte und selbst ausgestellte Zertifikate zurückgreifen. SSL-Zertifikate mit Let's Encrypt oder sogar vollständigen Enterprise Zertifikaten sprengen diesen Rahmen - wir wollen einfach https nutzen. Und natürlich werden sich die Browser beschweren.

SSL-Modul aktivieren und SSL Zertifikat 

sudo apt install ssl-cert      # oder openssl - normaly already installed: libssl1.1, openssl, ssl-cert
sudo a2enmod ssl
sudo systemctl restart apache2
# create certificate
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/localhost.key -out /etc/ssl/certs/localhost.crt
# you may leave all Options untouched! Checking: 
# sudo ls -al /etc/ssl/private/
# sudo ls -al /etc/ssl/certs/l*

Zertifikate konfigurieren für localhost 

sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/default-ssl.conf.bak
sudo vim /etc/apache2/sites-available/default-ssl.conf

Konfigurationen bearbeiten - Zertifikate verlinken   

....
SSLEngine on
SSLCertificateFile /etc/ssl/certs/localhost.crt
SSLCertificateKeyFile /etc/ssl/private/localhost.key
.....

SSL Site aktivieren und testen 

sudo a2ensite default-ssl
sudo apachectl configtest
sudo systemctl restart apache2 
# Testing: https: // ip-adress  OR https: // servername 

Jetzt haben wir Funktionalität und Vorlagen für weitere Sites.

Datenbank MariaDB

Wir installieren und konfigurieren den Datenbankserver MariaDB. Zur Erstinstallation gehört auch das Setzen des MariaDB-root Password und die Grundkonfiguration des Servers.

sudo apt install mariadb-server mariadb-client
sudo mysql_secure_installation

Authentifizierung: für meine Systeme entscheide ich mich häufig für folgende Authentifizierung:
User root / Password seminar 

Login Test via Shell mit CLI Tool mysql

mysql -u root -h localhost -p      
# Beispiel für neue TYPO3 DB - Anm.: WordPress möchte gerne utf8mb4_unicode_ci
CREATE DATABASE typo3_12 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; 

Jetzt sollten wir noch ein paar grundsätzliche Konfigurationen (Ordnerstrukturen, VHosts) und Installationen (siehe Grafiktool) vornehmen. 

Environment komplettieren

Graphicsmagick installieren

sudo apt install graphicsmagick 

Beispielhafte Webserver-Ordner-Struktur
mit Basispfaden /var/www/html (Projekte) und /var/www/typo3_src (TYPO3 Sources)

/var/www
├── html
│   ├── hosting
│   ├── index.html
│   ├── phpinfo.php
│   ├── testing
│   └── typo3
│       ├── typo3-12.lamp82
│       ├── typo3-13.lamp82
│       ├── typo3-demo.lamp82
│       └── typo3-introduction.lamp82
└── typo3_src

VHost Beispiel erstellen:

sudo vim /etc/apache2/sites-available/typo3-12.conf

Auszug aus der typo3-12.conf Site Configuration - Kommentare ausgeblendet:  

<VirtualHost *:80>
    ServerAdmin webmaster@hv-debcmsodsrv
    ServerName typo3-12.lamp82
    ServerAlias www.typo3-12.lamp82
    DocumentRoot /var/www/html/typo3/typo3-12.lamp82

    <Directory /var/www/html/typo3/typo3-12.lamp82/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    LogLevel warn

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<IfModule mod_ssl.c>
        <VirtualHost _default_:443>
                ServerAdmin webmaster@hv-debcmsodsrv
                ServerName typo3-12.lamp82
                ServerAlias www.typo3-12.lamp82
                DocumentRoot /var/www/html/typo3/typo3-12.lamp82

                <Directory /var/www/html/typo3/typo3-12.lamp82/>
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride All
                    Order allow,deny
                    allow from all
                 </Directory>

                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined

                SSLEngine on
                SSLCertificateFile      /etc/ssl/certs/localhost.crt
                SSLCertificateKeyFile /etc/ssl/private/localhost.key

                <FilesMatch "\.(cgi|shtml|phtml|php)$">
                                SSLOptions +StdEnvVars
                </FilesMatch>
                <Directory /usr/lib/cgi-bin>
                                SSLOptions +StdEnvVars
                </Directory>

        </VirtualHost>
</IfModule>

Im Grunde wurde einfach die Standard-SSL-Hostconfig für localhost kopiert und auf das gewünschte Projekt angepast. Danach immer nur die Pfade und URL anpassen. Das ist in VIm einfach per :%s/typo3-12/typo3-13/g gewünschte Stellen ersetzen.

SSL-Site aktivieren - natürlich muss die Site noch aktiviert werden:

sudo a2ensite typo3-12 
sudo systemctl reload apache2.service

HOSTS: In den meisten einfachen Testumgebungen haben wir kein DNS für unsere Testdomains (hier: typo3-12.conf). Also bitte nicht vergessen auf der Client-Seite die HOSTS-Datei anzupassen. Bei einem Windows System ist die Datei unter C:\Windows\System32\Drivers\etc/hosts zu finden.

# HOSTS auf Client
# Die TLD .lamp82 steht hier für Entwicklungen mit PHP 8.2
172.29.149.202      hv-debcmsodsrv              hv-debcmsodsrv.lamp82
# T3-Tests:
172.29.149.202	    typo3-12.lamp82             www.typo3-12.lamp82

Hier kann man IP-Adressen eines Hyper-V Default-Switch erkennen. In langfristig genutzten Umgebungen bitte unbedingt die VM Netzwerktechnik anpassen, da der Default-Switch gerne das IP-Subnetz ändert!

 

Privates

... zu Joe Brandes

Sie finden auf dieser Seite - als auch auf meiner privaten Visitenkarte joe-brandes.de einige Hintergrundinformationen zu mir und meinem Background.
Natürlich stellt die IT einen Schwerpunkt in meinem Leben dar - aber eben nicht nur ...

joe brandes 600px

Private Visitenkarte / Technik: HTML & CSS
joe-brandes.de

Jobs

... IT-Trainer & Dozent

Ich erarbeite und konzipiere seit über 30 Jahren IT-Seminare und -Konzepte. Hierfür stehen der "PC-Systembetreuer / FITSN" und der "CMS Online Designer / CMSOD". Ich stehe Ihnen gerne als Ansprechpartner für Ihre Fragen rund um diese und andere IT-Themen zur Verfügung!

becss 600px

BECSS Visitenkarte / Technik: HTML & CSS
becss.de

Hobby

... Snooker & more

Wer einmal zum Snookerqueue gegriffen hat, der wird es wohl nicht wieder weglegen. Und ich spiele auch immer wieder gerne eine Partie Billard mit den Kumpels und Vereinskameraden. Der Verein freut sich über jeden, der einmal in unserem schicken Vereinsheim vorbeischauen möchte.

bsb 2011 600px

Billard Sport BS / nicht mehr von mir betreut
billard-sport-braunschweig.de

Wir benutzen ein CMS also auch Cookies
Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website zu nutzen. Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.