Debian Buster - phpMyAdmin - MariaDB - Joomla

Problem

Ei­ne be­ste­hen­de Joomla-In­stal­la­tion soll von ein­er älte­ren Debian-Ver­sion auf Debian Buster um­zie­hen. Die ak­tu­elle Joomla-In­stal­la­tion nutzt zu­dem das Easy-Fol­der-Lis­ting (An­zei­gen von Ver­zeich­nis­in­hal­ten (in die­sem Fall sind das ge­moun­te­te Win­dows-Ver­zeich­nis­se). Da­rum soll die sel­be Joomla-Ver­sion ver­wen­det wer­den.
Das Da­ten­banksys­tem ist in Debian Buster ein an­de­res. Ein Up­date und Up­grade der ak­tu­ell noch ge­nutz­ten Debian In­stal­la­tion führ­te zu un­er­wünsch­ten Er­gebnis­sen.

Die­se In­stal­la­tion hier habe ich in einer Virtual­box ge­tes­tet dann auf dem Ech­tsys­tem durch­ge­führt. Da­bei hab ich mit putty ge­ar­bei­tet. Dann konnte ich die hier ge­zeig­ten Kom­man­dos ein­fach ko­pie­ren und in die Kon­so­le ein­fü­gen. Da­tei­en ha­be ich mit WinSCP über­tra­gen.

Ziele

Durch­füh­rung

Apache Webserver in­stal­lie­ren

# apt-get install apache2 apache2-utils

Apache Web­ser­ver akti­vie­ren

# systemctl start apache2
# systemctl enable apache2

Apache Web­ser­ver Sta­tus e­rmit­teln

# systemctl status apache2

Apache Web­ser­ver Stan­dard­sei­te tes­ten

Aufruf mit

http://ip-des-servers

Die Stan­dard­sei­te des Ser­vers wird an­ge­zeigt.

MariaDB in­stal­lie­ren

# apt-get install mariadb-server

MariaDB - Da­ten­bank für phpMyAdmin er­stel­len

# 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

Die­ser Ben­ut­zer 'phpmyadmin' wird spä­ter ver­wen­det, um phpMyAdmin über den Brow­ser zu nut­zen.

# 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 her­un­ter­laden

Al­terna­tiv: Datei an­ders her­un­ter­la­den und zum Beis­piel mit WinSCP über­tra­gen. Das um­geht das Th­ema mit ver­trau­ens­wür­di­gen Quel­le.

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 umbe­nen­nen

Der Ord­ner wird in 'phpmyadmin' um­be­nannt.

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 Ver­zeich­nis für und dar­in Pass­wort­da­tei er­stel­len

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

phpMyAdmin - Ar­beits­ver­zeich­nis er­stel­len

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

phpMyAdmin - Kon­fi­gu­ra­tions­da­tei ein­bin­den

# a2enconf phpmyadmin.conf

Apache Ser­ver neu star­ten

# systemctl restart apache2

phpMyAdmin - Kon­fi­gu­ra­tions­da­tei

# 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 die­ser Stel­le...

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

...ein kom­plexes Kenn­wort ein­tra­gen.

NTFS-Unterstützung

Le­se­fä­hig­keit für NTFS-Da­ten­trä­ger wird hier für das Easy-Folder-Lis­ting be­nö­tigt
Anleitung:
https://hans-lohrbach.de/anleitungen/de/debian-windows-freigabe-dauerhaft-mounten.html

# apt-get install cifs-utils

Die wei­ter­en Schrit­te

Um­lei­tung von der Stan­dard­sei­te

Es ist sicher auf­ge­fal­len, dass die­se mi­grier­te Web­site erst er­reicht wird, wenn man in der URL die Adresse mit Un­ter­ord­ner an­gibt. Da­mit das nicht er­for­der­lich ist, ha­be ich die ori­gi­na­le 'index.html' des Debian-Sys­tems so er­setzt, dass man sog­leich in die Joomla-In­stal­la­tion ge­lei­tet wird. Ich wollte ein­fach die Joomla-In­stal­la­tion in ei­nem ei­gen­en Ord­ner ha­ben. Bei ei­nem Pro­vi­der spielt das meist kei­ne Rol­le.

<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/