Schlagwort-Archive: GNU/Linux

Unixähnliche Mehrbenutzer-Betriebssysteme, die auf dem Linux-Kernel und wesentlich auf GNU-Software basieren. Wie CentOS, Debian, Ubuntu Fedora.

phpMyAdmin mit PHP8.2 Installation in Debian

phpMyAdmin Installation mit PHP 8.2 in Debian 12

Tutorial zur Installation von phpMyAdmin auf Debian 11 und Debian 12 mit Apache2. Für die Administration und Verwaltung von MySQL und MariaDB-Datenbanken aus dem Web-Browser.

Unter Debian lässt sich phpMyAdmin am einfachsten über den Paket Managerapt install phpmyadminaus dem Debian Standard Repository installieren, was dann allerdings für PHP 7.4 bereitgestellt wird.

Möchte man unter Debian 12 jedoch eine neuere PHP-Version nutzen, beispielsweise etwa für ein aktuelles CMS wie WordPress, wo PHP 8.2 oder neuer empfohlen wird, lässt sich phpMyAdmin manuell in nur wenigen Schritten installieren.

PHP Installation auf Debian

Die phpMyAdmin Installation auf Debian erfolgt hier als root „su -“ um Apache2, MariaDB und PHP 8.2 von DEB.SURY.ORG bereitzustellen.

Zuerst benötigte Dienstpakete für in weiterem Verlauf installieren

$ apt install lsb-release apt-transport-https ca-certificates wget gnupg -y

Das Sury Repository für PHP 8 auf dem System hinzufügen.

$ wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
$ echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list

Aktualisieren der Paketlisten wie folgt.

$ apt update

Wenn der Apache2-Webserver noch nicht installiert ist.

$ apt install apache2 -y

Nun PHP 8.2 mit den wichtigsten PHP-Module installieren.

$ apt install php8.2 php8.2-common php8.2-cli php8.2-curl php8.2-imap php8.2-apcu php8.2-intl php8.2-cgi php8.2-mbstring php8.2-gd php8.2-mysql php8.2-opcache php8.2-bcmath php8.2-xml php8.2-xsl php8.2-zip php8.2-bz2 libapache2-mod-php8.2 -y

Aktualisieren der bereitgestellten Pakete wie folgt.

$ apt update && apt upgrade -y
$ [ -f /var/run/reboot-required ] && reboot -f

MariaDB Installation

Im nächsten Schritt wird der MariaDB-Server und (MySQL) Client auf dem Server installiert.

$ apt install mariadb-server mariadb-client -y

Dann die Konfiguration des MariaDB-Servers abschliessen.

$ mysql_secure_installation

Da noch kein Root-Passwort für die Datenbank festgelegt ist, Vervollständige die folgenden Abfragen:

  • Switch to unix_socket authentication [Y/n] – Enter n to skip.
  • Set root password? [Y/n] – Type y and press Enter to create a root password for your database. If you already have a root password, enter n to not change the root password.
  • Remove anonymous users? [Y/n] – Type y and press Enter.
  • Disallow root login remotely? [Y/n] – Type y and press Enter.
  • Remove test database and access to it? [Y/n] – Type y and confirm with Enter.
  • Reload privilege tables now? [Y/n] – Type y and confirm with Enter.

MariaDB ist nun betriebsbereit. Weiter mit Verzeichnispfad wechseln.

$ cd /usr/share

phpMyAdmin Installation auf Debian

Für die phpMyAdmin Installation auf Debian wird die aktuelle Version heruntergeladen mit dem folgenden Befehl.

$ wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip -O phpmyadmin.zip

Entpacken des soeben heruntergeladenen Archiv wie folgt.

$ unzip phpmyadmin.zip

Nach dem entpacken das heruntergeladene Archiv entfernen.

$ rm -f phpmyadmin.zip

Anschließend der Name des entpackten Verzeichnisses umbenennen.

$ mv phpMyAdmin-*-all-languages phpmyadmin

Und die Rechte auf das phpMyAdmin-Verzeichnis ändern.

$ chmod -R 0755 phpmyadmin

Apache Konfiguration für phpMyAdmin

Erstelle nun eine Apache2-Konfigurationsdatei für phpMyAdmin in /etc/apache2/conf-available/phpmyadmin.conf.

Dazu den folgenden Inhalt in der Terminal Shell einfügen.

$ cat << EOF > /etc/apache2/conf-available/phpmyadmin.conf
Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php
</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>
EOF

Die neue Apache2-Konfiguration überprüfen.

$ apachectl -t
Syntax OK

Die soeben erstellte Apache2-Konfigurationsdatei aktivieren.

$ a2enconf phpmyadmin

Und den Apache2-Webserver Neuladen.

$ systemctl reload apache2

Erstellen das temporären Verzeichnis, welches phpMyAdmin benötigt.

$ mkdir /usr/share/phpmyadmin/tmp/

Dem Webserver-Benutzer nun die benötigten Besitzerrechte erteilen.

$ chown -R www-data:www-data /usr/share/phpmyadmin/tmp/

  Bis und mit Debian 10 sowie unter Ubuntu ist aus Sicherheitsgründen die Passwort-Authentifizierung beim MariaDB-Server standardmäßig für die Root-Anmeldung deaktiviert (z.B. über phpMyAdmin). Unter Debian 11 ist dies jedoch möglich. Bei Debian 10 können die nachfolgenden Schritte durchgeführt werden, um die Root-Anmeldung mittels Passwort ebenfalls zu erlauben.

$ mysql -u root
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';
FLUSH PRIVILEGES;
quit

Der Apache2-Webserver mit PHP, der MariaDB-Server und phpMyAdmin ist nun einsatzbereit.

Jetzt können wir die phpMyAdmin-Webseite öffnen, indem wir zur IP-Adresse oder FQDN in der Browser URL /phpmyadmin hinten anfügen.
Zum Beispiel: http://192.168.1.2/phpmyadmin

phpMyAdmin mit PHP8 Installation auf Debian 12

PHP-Version anzeigen und ändern

Bei einem System wo mehrere PHP-Versionen installiert sind, kann eine PHP-Version für den Apache2-Webserver aktiviert werden.

Dabei wird das entsprechende Modul mit dem Apache helper aktiviert, mit dem Befehl a2enmod, und mit a2dismod wird es deaktiviert.

$ a2dismod php7.4
$ a2enmod php8.2
$ systemctl restart apache2

Mit anlegen einer php-Datei und folgendem Inhalt, wird aktuelle PHP-Version und die PHP-Module angezeigt. Wenn Du keine Standard Apache2-Site angelegt hast, speichere die Datei phpinfo.php in der Docroot unter /usr/share/phpmyadmin.

<?php
phpinfo();
?>

Die PHP-Einstellungen für den Apache2-Webserver werden in Tabellenform im Browser ausgegeben. Beispiel: http://192.168.1.2/phpinfo.php

  Für produktive Systeme sollte phpinfo wieder entfernt werden.

Linux Runlevel überprüfen und festlegen

Runlevel heute auf systemd implementiert, waren zuvor noch die meisten Linux-Distributionen mit dem Init-System, dem Sys-V Stil ausgestattet. Mit Sys-V wurden sieben verschiedene Runlevels verwendet, um zu bestimmen, welche Prozesse auf dem System gestartet werden. Der Runlevel 3 war zum Beispiel reserviert, um normalerweise die Befehlszeile und die zugehörigen Programme zu starten, während Runlevel 5 eine GUI und alle dafür erforderlichen Prozesse startete. Die Ergebnisse können je nach Distribution variieren.

Heutzutage hat die überwiegende Mehrheit der Linux-Distributionen systemd als Init-System übernommen. Einige Distributionen verwenden noch immer Sys-V, wo die Implementierung von Runlevels wie oben beschrieben noch existiert. Bei systemd-Systemen ist das Konzept der Runlevel noch am Leben, es wurden in systemd-„Ziele“ umgewandelt.

Auf einigen Systemen existieren noch Reste von Sys-V, auf denen Befehle wie runlevel noch zu finden sind. Einige moderne systemd-Distributionen haben diese Unterstützung vollständig ausgerottet. In diesem Tutorial zeigen wir, wie man den aktuellen Runlevel unter Linux überprüft.

Linux Runlevel überprüfen

Nachfolgend zwei Befehle um den aktuellen Runlevel zu ermitteln.

$ runlevel
N 5
$ who -r
  run-level 5  2022-11-07 14:52

Wie zu sehen ist hier der Runlevel 5 gestartet. Alternativ kann der Befehl who -r ausgeführt werden. Den Befehl runlevel gibt es nur auf einigen systemd-Distributionen, sollte aber auf jedem Sys-V-System gehen.

Die verschiedenen Runlevels wurden entsprechenden systemd-Zielen zugeordnet. Mit folgendem Befehl überprüft man die Ziele.

$ ls -l /lib/systemd/system/runlevel*

Nachfolgend die Ausgabe der Runlevels bei einem Linux Mint, was auf Ubuntu/Debian basiert.

$ lrwxrwxrwx 1 root root   15 Aug 31 17:27 /lib/systemd/system/runlevel0.target -> poweroff.target
lrwxrwxrwx 1 root root   13 Aug 31 17:27 /lib/systemd/system/runlevel1.target -> rescue.target
lrwxrwxrwx 1 root root   17 Aug 31 17:27 /lib/systemd/system/runlevel2.target -> multi-user.target
lrwxrwxrwx 1 root root   17 Aug 31 17:27 /lib/systemd/system/runlevel3.target -> multi-user.target
lrwxrwxrwx 1 root root   17 Aug 31 17:27 /lib/systemd/system/runlevel4.target -> multi-user.target
lrwxrwxrwx 1 root root   16 Aug 31 17:27 /lib/systemd/system/runlevel5.target -> graphical.target
lrwxrwxrwx 1 root root   13 Aug 31 17:27 /lib/systemd/system/runlevel6.target -> reboot.target

/lib/systemd/system/runlevel1.target.wants:
total 0

/lib/systemd/system/runlevel2.target.wants:
total 0

/lib/systemd/system/runlevel3.target.wants:
total 0

/lib/systemd/system/runlevel4.target.wants:
total 0

/lib/systemd/system/runlevel5.target.wants:
total 0

Welche Linux Runlevels gibt es?

0Halt System herunterfahren
1Single-user mode (Rettung und Sonderverwaltung)
2Multi-user ohne Netzwerkschnittstellen und Daemons starten
3Multi-user mode normaler start mit Netzwerk
4Not Used
5Multi-user wie runlevel 3 + Display manager X11 GUI
6Reboot startet das System neu

Linux systemd runlevel anzeigen

Wie bei Linux Runlevels gibt es standardmäßig 7 systemd-Ziele. Die beiden Hauptziele sind multi-user.target und graphical.target. Die standardmäßigen systemd-Ziele kann man mit dem folgenden Befehl anzeigen.

$ systemctl get-default
graphical.target

Bei diesem Beispiel ist graphical.target gestartet, was sinnvoll ist, da wir eine grafische Desktop-Umgebung benötigen. Bei einem Server wo oft kein GUI ausgeführt wird, ist meist multi-user.target gestartet.

$ systemctl get-default
multi-user.target

Verwende den folgenden Befehl um zu sehen, welche Dienste diesem Ziel zugeordnet sind.

$ systemctl list-dependencies graphic.target
graphic.target

Versuche mit folgenden Befehl zu sehen, welches systemd-Ziel (oder welchen Runlevel) ein Dienst ausführen muss. In diesem Beispiel überprüfen wir den SSH-Dienst.

$ systemctl show -p WantedBy sshd.service
WantedBy=multi-user.target

Runlevel neu festlegen

Der Runlevel festlegen lässt sich mit diesem Befehl mit sudo Privileg.

$ sudo systemctl set-default multi-user.target

Der Befehl wird beim nächsten Systemstart den Mehrbenutzermodus (multi-user.target) starten.