Projekt Webserver – Ubuntu 22.04 Teil 3 – PHP und MySQL nachinstallieren und konfigurieren

Im Teil 2 dieser Serie haben wir einen funktionierenden Webserver für statische HTML-Webseiten erstellt. Jetzt erweitern wir den Funktionsumfang noch etwas indem wir PHP installieren. Schließlich sollen auch dynamische Webseiten oder CMS-Systeme wie zB WordPress auf diesem Webserver lauffähig sein.

PHP Installation

Um überhaupt dynamische Webseiten erstellen zu können wird vor allen einmal PHP benötigt. Hierzu installieren wir PHP mit den gängigsten Paketen nach – derzeit in Ubuntu 22.04 in der Version 8.1. Vorab vergewissern wir noch ob diese Pakete installiert sind.

sudo apt-get install software-properties-common ca-certificates lsb-release apt-transport-https

Danach installiern wir PHP mit den gängisten Paketen. Sollten mehrere PHP-Versionen erwünscht sein gehen wir wie in Teil 4 beschrieben vor.

sudo apt-get install php libapache2-mod-php php-curl php-fpm php-gd php-imagick php-intl php-json php-mbstring php-xml php-zip

Mit dem Befehl php -m können wir generell sehen was es da alles so an PHP-Modulen gibt. Nach erfolgter Installation starten wir den Webserver neu.

sudo systemctl restart apache2

Ob PHP nun auch erfolgreich am laufen ist können wir testen indem wir eine Datei (zB info.php) mit folgendem Inhalt mit einem der Programme am Ende von Teil 2 in das Hauptverzeichnis /var/www/html des Webservers kopieren.

<?php phpinfo(); ?>

Läuft.

php.ini anpassen

Je nach Einsatzzweck mag es notwendig oder sinnvoll sein die vorgegebenen Werte für das Speicherlimit usw. zu erhöhen indem wir die Datei php.ini bearbeiten. Folgender Befehl öffnet die Datei.

sudo nano /etc/php/8.1/apache2/php.ini

Ich erhöhe an dieser Stelle folgende drei Werte, den Rest lasse ich unberührt. Sofern man weiß was man tut kann man natürlich auch sämtliche anderen Werte nach den persönlichen Anforderungen anpassen.

memory_limit = 256M
post_max_size = 200M
upload_max_filesize = 200M

Danach starten wir den Webserver neu.

sudo systemctl restart apache2

Indem wir nocheinmal die vorhin angelegte Datei info.php im Webbrowser aufrufen können wir überprüfen ob die Werte auch übernommen wurden. Somit steht jetzt auch dynamischen Webseiten auf PHP-Basis nichts mehr im Wege. Für Datenbank-Basierende Systeme wie zB WordPress benötigen wir jedoch auch noch MySQL.

MySQL installieren

Mit MySQL werden Datenbanken angelegt und verwaltet. Alternativ wird auch immer öfter MariaDB eingesetzt. Hierzu gibt es ebenfalls eine gute Ubuntu-Dokumentation.

Installieren müssen wir natürlich einmal den MySQL-Server mit dem entsprechenden PHP-Paket und phpMyAdmin für die bequeme Verwaltung danach.

sudo apt-get install mysql-server php-mysql phpmyadmin

Die Frage Configure database for phpmyadmin with dbconfig-common? beantworten wir mit yes und vergeben das Passwort für den phpMyAdmin Benutzer.

Als nächstes wählen wir die Option 1 für Apache2 aus und bestätigen dies mit der Enter-Taste.

Nun können wir bereits phpMyAdmin im Webbrowser aufrufen uns aber noch nicht einloggen. Hierzu erstellen wir einen entsprechenden MySQL-Benutzer.

 

Als Alternative zu phpMyAdmin könnte man aber auch Adminer benutzen. Adminer besteht nur aus einer Datei und es braucht nichts weiter als diese auf dem Webserver hochzuladen. Auch die Verwaltung von Datenbanken in der Konsole ist natürlich möglich aber ich ziehe die grafische Version vor.

MySQL Benutzer anlegen

Als erstes vergeben wir mal für den Benutzer root ein Passwort. Hierzu loggen wir uns in MySQL als Benutzer root ein.

sudo mysql -u root

Führen anschließend folgende Befehle aus:

mysql> flush privileges;
mysql> use mysql

Und vergeben nun für den Benutzer root ein Passwort.

mysql> alter user 'root'@'localhost' identified by 'das-root-passwort';

Und beenden mit

mysql> flush privileges;
mysql> quit;

Dann starten wir mal MySQL neu

sudo systemctl restart mysql.service

und loggen uns mit dem Benutzer root samt neu erstellten Passwort ein.

sudo mysql -u root -p

Alternative

Wir könnten die nächsten Schritte statt mit dem Benutzer root auch mit dem automatisch erstellten MySQL-Benutzer aufführen. Hierzu müssten wir den Benutzer von der Datei debian.cnf auslesen.

sudo nano /etc/mysql/debian.cnf

Als Benutzer sollte debian-sys-maint festgelegt sein und würde somit folgendes ergeben.

sudo mysql -u debian-sys-maint -p

Danach das Passwort der Datei eingeben und mit der Erstellung eines Bentzers für die MySQL-Datenbanken erstellen.

mysql> create user 'webserver'@'localhost' identified by 'webserver-passwort';
mysql> grant all privileges on *.* to 'webserver'@'localhost';
mysql> flush privileges;
mysql> quit;

Feintuning der Berrechtigungen vom MySQL-Benutzer

Der zuvor angelegte Benutzer hat alle Berechtigungen für alle Datenbanken erhalten. Um dies einzuschränken könnte man dies auf nur bestimmten Berechtigungen oder auch nur für bestimmte Datenbanken einschränken. Hierzu wäre dies nach folgendem Schema anzupassen.

mysql> GRANT Berechtigung ON *.* TO 'webserver'@'localhost';
mysql> GRANT Berechtigung ON Datenbankname.* TO 'webserver'@'localhost';
mysql> GRANT Berechtigung ON Datenbankname.Tabellenname TO 'webserver'@'localhost';

Auch ein nachträgliches entziehen von Berechtigungen ist ohne weiteres mit REVOKE möglich.

mysql> REVOKE Berechtigung ON Datenbankname.Tabellenname TO 'webserver'@'localhost';

Die gängisten Berechtigungen im Überblick:

  • ALL – alle Berechtigungen
  • CREATE – Erstellung von Datenbanken und Tabellen
  • DELETE – Einträge von Tabellen löschen
  • DROP – Datenbanken und Tabellen löschen
  • INSERT – Einträge zu Tabellen hinzufügen
  • SELECT – Daten von Datenbanken auswähle
  • SHOW DATABASES – Berechtigung zum Anzeigen sämtlicher Datenbanken
  • UPDATE – Einträge in Tabellen aktualisieren

Für alle die es ganz genau wissen wollen empfehle ich die offizielle Dokumentation: https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html

Mit dem Benutzer webserver können wir uns nun in phpMyAdmin einloggen und unsere Datenbanken anlegen bzw. verwalten indem wir folgenden Link im Browser eingeben.

Unter Windows http://webserver/phpmyadmin und unter Linux/Mac http://webserver.local/phpmyadmin in der Adressenzeile des Browsers eingeben.

Als nächsten Schritt werden wir dann das CMS-System WordPress auf dem Webserver installieren. Hierzu mit „Neu“ eine Datenbank anlegen zb wordpress.

Die aktuellen WordPress-Installationsdateien können wir hier herunterladen https://de.wordpress.org/download/ und anschließend die Dateien entpacken und auf dem Server kopieren. Je nachdem ob die Dateien in ein Unterverzeichnis zB /var/www/html/wordpress oder in das Hauptverzeichnis /var/www/html kopiert wurden rufen wir die Installation mit folgenden Links auf.

Windows

http://webserver   bzw.   http://webserver/wordpress

Linux/Apple

http://webserver.local   bzw.  http://webserver.local/wordpress

Den Installationsvorgang selbst habe ich hier bereits einmal beschrieben – funktioniert immer noch so.




Bitte beachten Sie, dass dieser Beitrag bereits vor über einem Jahr geschrieben wurde und unter umständen nicht mehr aktuell ist.