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.