Du betrachtest gerade Script für Linux Mint 22.3 als XAMPP-Ersatz
Linux Mint Logo

Script für Linux Mint 22.3 als XAMPP-Ersatz

Neues aus Nerdistan

Ich möchte auf meinem kleinen Linux-Laptop gerne XAMPP als lokalen Webserver einrichten. Es geht mit um eine Testumgebung für die Genealogie-Software webtrees, die allerdings mindestens die PHP-Version 8.3 benötigt. Die letzte veröffentlichte XAMPP-Version von Apachefriends stammt von Ende 2023, und sie installiert nur PHP-Version 8.2. Auch wäre es schön, eine weitere Testumgebung für WordPress zu haben.

Und die Installations-Software von XAMPP gibt es nicht mehr in den Repositories oder bei Flatpak. Bei Sourceforge findet sich für Linux nur die Version 8.2.12. Diese lässt sich nur widerborstig installieren. Die Routine hat einen langen Hänger nach 73 % Installation, vermutlich stilles Warten auf einen Timeout. Der Portkonflikt durch die bereits vorhandene Apache2-Version wird nicht automatisch behoben. Irgendwie taugt das so nichts. Erstmal rufe ich das Uninstall-Script für XAMPP unter /opt/lampp auf, das auch zügig durchläuft.

Gibt es denn nicht ein brauchbares, noch dazu einfaches Script zur Einrichtung eines lokalen Webservers für Linux Mint 22.3 als XAMPP-Ersatz? Immerhin verwendet XAMPP nur Standardkomponenten von Linux. Allerdings mit unzähligen Optionen. Ich beauftrage Duck.ai, mir ein solches Script bzw. mehrere zum Installieren, Starten, Stoppen und Deinstallieren zu erstellen, mit folgendem String:

Prompt von Duck.ai:

Bitte erstelle ein Script für einen vollständigen Webserver auf Linux MInt 22.3 mit Apache, Mariadb, Perl und PHP, jeweils die neueste Version, mit allen Optionen oder Erweiterungen, auch php-intl, sowie phpmyadmin. Der Webserver darf nur lokale Zugriffe zulassen. Das Script soll eine Fehlerbehandlung ermöglichen. Zusätzlich bitte Scripte zum Einschalten, zum Ausschalten und zur Deinstallation des Webservers.

Script für Linux Mint 22.3 als XAMPP-Ersatz:

#!/bin/bash

error_exit() {
echo „Fehler: $1“
exit 1
}

# Update und Upgrade des Systems

echo „System aktualisieren…“
sudo apt update && sudo apt upgrade -y || error_exit „Update/Upgrade fehlgeschlagen.“

# Installation der benötigten Pakete

echo „Pakete installieren…“
sudo apt install apache2 mariadb-server libapache2-mod-php php php-mysql php-intl perl php-mbstring php-zip php-gd php-json php-curl php-imagick -y || error_exit „Installation der Pakete fehlgeschlagen.“

# Apache Konfiguration für lokalen Zugriff (nur localhost)

echo „Apache Konfiguration einstellen…“
if ! grep -q „Require local“ /etc/apache2/apache2.conf; then
echo „<Directory /var/www/html/>
Options FollowSymLinks
AllowOverride All
Require local
</Directory>“ | sudo tee -a /etc/apache2/apache2.conf || error_exit „Fehler beim Hinzufügen zur Apache-Konfiguration.“
fi

# Starten von Apache und MariaDB

echo „Starte Apache und MariaDB…“
sudo systemctl start apache2 && sudo systemctl start mariadb || error_exit „Fehler beim Starten der Dienste.“

# Sicherstellen, dass die Dienste beim Booten starten

sudo systemctl enable apache2 && sudo systemctl enable mariadb || error_exit „Fehler beim Aktivieren der Dienste.“

# MariaDB sichern (z.B. root Passwort setzen)

echo „MariaDB konfigurieren…“
sudo mysql_secure_installation || error_exit „Fehler bei der MariaDB-Konfiguration.“

# Installation von phpMyAdmin

echo „phpMyAdmin installieren…“
sudo apt install phpmyadmin -y || error_exit „Installation von phpMyAdmin fehlgeschlagen.“

# phpMyAdmin in Apache einbinden

echo „Konfiguriere phpMyAdmin für Apache…“
echo „Include /etc/phpmyadmin/apache.conf“ | sudo tee -a /etc/apache2/apache2.conf || error_exit „Fehler beim Hinzufügen der phpMyAdmin-Konfiguration zu Apache.“

# Beispiel für eine PHP-Datei erstellen

echo „Erstelle PHP-Testdatei…“
echo „<?php phpinfo(); ?>“ | sudo tee /var/www/html/info.php || error_exit „Fehler beim Erstellen der PHP-Testdatei.“

# Berechtigungen für /var/www/html festlegen

echo „Berechtigungen festlegen…“
sudo chown -R www-data:www-data /var/www/html || error_exit „Fehler beim Festlegen der Berechtigungen.“
sudo chmod -R 755 /var/www/html || error_exit „Fehler beim Ändern der Berechtigungen.“

# Apache neu starten, um Änderungen zu übernehmen

echo „Apache neu starten…“
sudo systemctl restart apache2 || error_exit „Fehler beim Neustarten von Apache.“

echo „Die Installation ist abgeschlossen! Besuchen Sie:“
echo „- http://localhost/info.php, um die PHP-Informationen anzuzeigen.“
echo „- http://localhost/phpmyadmin, um phpMyAdmin zu nutzen.“

Ergebnis

Das Script wird in üblicher Weise ausführbar gemacht und läuft dann problemlos durch. Der Aufruf von localhost im Browser zeigt den Informationstext zu Apache2, der von localhost/info.php ergibt Version 8.36, also die Standardversion unter Ubuntu 24.04.

Per localhost/phpmyadmin lässt sich mühelos (Benutzer root und Kennwort eingeben) eine neue noch leere Datenbank meine_db anlegen.

Einrichten von Webtrees

Nun erstelle ich einen Ordner wt in /var/www/html/wt, achte auf die Rechte und Gruppenzugehörigkeit zu www-data. Ich öffne den Ordner mit root-Rechten und kopiere webtrees als zip-datei hinein, entpacke sie. Über den Aufruf von localhost/wt wird webtrees in typischer Weise installiert. Der GEDCOM-Import gelingt danach auch, das Häkchen bei den Mediendateien setzen, und alle Mediendateien händisch in den Ordner /var/www/html/wt/data/media kopieren. Vorher müssen die Rechte von data und media auf www-data bzw. root gesetzt werden, damit es möglich ist.

Einrichten von WordPress

Zunächst gibt es ständig schwerwiegende Probleme mit der REST-API, die ein vernünftiges Arbeiten mit WordPress verhindern. Nach langer Internetsuche, mit AI und ohne, habe ich schließlich in einem Forum eine recht einfache Lösung für das nervige Problem gefunden.

Der Benutzer in der lokalen Website unter /var/www/html ist www-data, auch als Gruppe www-data, wie ich jetzt weiß, halt der Standard-Webserver-Benutzer bei Ubuntu. Die Rechte für den (gefüllten) Web-Ordner habe ich händisch mit

sudo chown -R www-data:wwwdata /var/www/html
und
sudo chmod -R 755 /var/www/html/
jeweils rekursiv eingestellt.

Nun ist es absolut wichtig, die Datei /etc/apache2/apache2.conf zu überprüfen. Hier bitte den richtigen Abschnitt hinter <Directory /var/www/> suchen, und an der richtigen Stelle AllowOverride None mit All zu ersetzen, um das rewrite der Links entsprechend der .htaccess-Datei überhaupt zu ermöglichen. Require all granted durch Require local ersetzen, wir wollen doch lokal arbeiten. Indexes hinter Options besser streichen, damit kein Directory-Listing ermöglichen:

<Directory /var/www/>
Options FollowSymLinks
AllowOverride All
Require local
</Directory>

Konfigurationsdatei speichern, und anschließend Apache neu starten mit sudo systemctl restart apache2. Danach waren sämtliche Probleme mit der REST-API behoben. Die Permalink-Einstellung habe ich belassen, also sprechende Links. Dafür schreibt WordPress offensichtlich eine passende Datei .htaccess ins Wurzelverzeichnis der Installation. Der selbstgebaute lokale Webserver ist im Vergleich zu XAMPP rasend schnell, da er vermutlich wenig Overhead produziert.

Kommentar

Das hat funktioniert, ein AI-generiertes Script für Linux Mint 22.3 als XAMPP-Ersatz. Allerdings war Feinarbeit nötig, an der ich fast gescheitert wäre. Ich hätte für das Script auch andere AI-Engines wie Mistral AI benutzen können. Die Scripts unterscheiden sich jeweils nur in Nuancen. Gut, das hier ist basales Linux-Scripting, kein freies Programmieren einer Anwendung selbst, welches mehr Spezialwissen erfordert. Ich werde die Angelegenheit weiter beobachten, denn die AI wird Programmierern zumindest helfen, sie möglicherweise ersetzen können. Bei Standardaufgaben ist das jetzt schon denkbar.

Disclaimer

Für ein wirkliches Debugging und umfangreiches Testen des Scripts fehlen mir die Spezialkenntnisse, wie mir vor Augen geführt wurde. Funktioniert hat es allerdings als Konzept! Das Linux-System ist letztlich prima als lokaler Webserver geeignet. XAMPP unter Win11 dagegen ist langsamer als eine Schnecke!

Schreibe einen Kommentar

* Bitte verwenden Sie ein signifikantes Pseudonym, nicht Ihren Klarnamen. Ihre IP-Adresse wird beim Absenden anonymisiert. Ihre Email-Adresse ist nicht erforderlich.