Debian Buster - phpMyAdmin - MariaDB - Joomla

Problem

Eine bestehende Joomla-Installation soll von einer älteren Debian-Version auf Debian Buster umziehen. Die aktuelle Joomla-Installation nutzt zudem das Easy-Folder-Listing (Anzeigen von Verzeichnisinhalten (in diesem Fall sind das gemountete Windows-Verzeichnisse). Darum soll die selbe Joomla-Version verwendet werden.
Das Datenbanksystem ist in Debian Buster ein anderes. Ein Update und Upgrade der aktuell noch genutzten Debian Installation führte zu unerwünschten Ergebnissen.

Diese Installation hier habe ich in einer Virtualbox getestet dann auf dem Echtsystem durchgeführt. Dabei hab ich mit putty gearbeitet. Dann konnte ich die hier gezeigten Kommandos einfach kopieren und in die Konsole einfügen. Dateien habe ich mit WinSCP übertragen.

Ziele

Durchführung

Apache Webserver installieren

# apt-get install apache2 apache2-utils

Apache Webserver aktivieren

# systemctl start apache2
# systemctl enable apache2

Apache Webserver Status ermitteln

# systemctl status apache2

Apache Webserver Standardseite testen

Aufruf mit

http://ip-des-servers

Die Standardseite des Servers wird angezeigt.

MariaDB installieren

# apt-get install mariadb-server

MariaDB - Datenbank für phpMyAdmin erstellen

# mysql -u root
MariaDB [(none)]> CREATE DATABASE phpmyadmin DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
MariaDB [(none)]> GRANT ALL ON phpmyadmin.* TO 'phpmyadmin'@'localhost' IDENTIFIED BY 'Ihr-Sicheres-Passwort';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

PHP installieren

# apt-get install php php-phpseclib php-php-gettext php-imagick php7.3-imap php7.3-gmp php7.3-common php7.3-gd php7.3-mbstring php7.3-xml php7.3-json php7.3-curl php7.3-zip php7.3-bz2 php7.3-intl php7.3-mysql

Benutzer für phpMyAdmin anlegen

Dieser Benutzer 'phpmyadmin' wird später verwendet, um phpMyAdmin über den browser zu nutzen.

# mysql -u root -p
MariaDB [(none)]> GRANT ALL ON *.* TO 'phpmyadmin'@'localhost' IDENTIFIED BY 'Ihr-Passwort';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Joomla Datenbank erstellen

Die Datenbank heißt 'cms'.

# mysql -u root -p
MariaDB [(none)]> CREATE DATABASE cms;
MariaDB [(none)]> GRANT ALL ON cms.* TO 'cms_user'@'localhost' IDENTIFIED BY 'Geheimes-Kennwort';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

phpMyAdmin herunterladen

Alternativ: Datei anders herunterladen und zum Beispiel mit WinSCP übertragen. Das umgeht das Thema mit vertrauenswürdigen Quelle.

wget https://files.phpmyadmin.net/phpMyAdmin/phpMyAdmin-5.0.4-all-languages.zip

phpMyAdmin installieren

Die Dateien werden nach '/usr/share' entpackt.

# unzip phpMyAdmin-5.0.4-all-languages.zip -d /usr/share

phpMyAdmin Ordner umbenennen

Der Ordner wird in 'phpmyadmin' umbenannt.

mv /usr/share/phpMyAdmin-5.0.4-all-languages/ /usr/share/phpmyadmin

phpMyAdmin Rechte anpassen

# chown -Rfv www-data:www-data -R /usr/share/phpmyadmin

Apache Konfigurationsdatei einrichten

# nano /etc/apache2/conf-available/phpmyadmin.conf

Inhalt /etc/apache2/conf-available/phpmyadmin.conf

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php
    AllowOverride All
    <IfModule mod_php5.c>
        <IfModule mod_mime.c>
            AddType application/x-httpd-php .php
        </IfModule>
        <FilesMatch ".+\.php$">
            SetHandler application/x-httpd-php
        </FilesMatch>
        php_value include_path .
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
        php_admin_value mbstring.func_overload 0
    </IfModule>
    <IfModule mod_php.c>
        <IfModule mod_mime.c>
            AddType application/x-httpd-php .php
        </IfModule>

        <FilesMatch ".+\.php$">
            SetHandler application/x-httpd-php
        </FilesMatch>

        php_value include_path .
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
        php_admin_value mbstring.func_overload 0
    </IfModule>
</Directory>

<Directory /usr/share/phpmyadmin/templates>
    Require all denied
</Directory>

<Directory /usr/share/phpmyadmin/libraries>
    Require all denied
</Directory>

<Directory /usr/share/phpmyadmin/setup/lib>
    Require all denied
</Directory>

phpMyAdmin Verzeichnis für und darin Passwortdatei erstellen

# mkdir /etc/phpmyadmin
# htpasswd -c /etc/phpmyadmin/.htpasswd meinBenutzerName

phpMyAdmin - Arbeitsverzeichnis erstellen

# mkdir -p /var/lib/phpmyadmin/tmp
# chown www-data:www-data /var/lib/phpmyadmin/tmp

phpMyAdmin - Konfigurationsdatei einbinden

# a2enconf phpmyadmin.conf

Apache Server neu starten

# systemctl restart apache2

phpMyAdmin - Konfigurationsdatei

# cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
# nano /usr/share/phpmyadmin/config.inc.php

In der Datei 'phpmyadmin/config.inc.php' an dieser Stelle...

$cfg['blowfish_secret'] = 'Hier-Ihr-komplexes-Kennwort-eintragen'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

...ein komplexes Kennwort eintragen.

NTFS-Unterstützung

Lesefähigkeit für NTFS-Datenträger wird hier für das Easy-Folder-Listing benötigt
Anleitung:
https://hans-lohrbach.de/anleitungen/de/debian-windows-freigabe-dauerhaft-mounten.html

# apt-get install cifs-utils

Die weiteren Schritte

Umleitung von der Standardseite

Es ist sicher aufgefallen, dass diese migrierte Website erst erreicht wird, wenn man in der URL die Adresse mit Unterordner angibt. Damit das nicht erforderlich ist, habe ich die originale 'index.html' des Debian-Systems so ersetzt, dass man sogleich in die Joomla-Installation geleitet wird. Ich wollte einfach die Joomla-Installation in einem eigenen Ordner haben. Bei einem Provider spielt das meist keine Rolle.

<META HTTP-EQUIV="refresh" CONTENT="0; URL=http://server-ip/cms/index.php">

Quellen
https://www.tecmint.com/install-joomla-on-debian/
https://linuxhint.com/install_phpmyadmin_debian_10/
https://www.florian-fritsch.com/phpmyadmin-unter-debian-buster-installieren-und-absichern/