Raspberry als Dokuwiki-Server Teil 2

WEB-Dienste - Apache, MySQL, PHP, phpMyAdmin und FTP einrichten

Letztes Update 2020/11/23 13:40

Apache2 installieren

sudo apt install apache2 -y

Das -y am Ende der Zeile bedeutet, dass die Installation nicht auf eine Eingabe wartet. Aufforderungen durch das Programm werden automatisch mit Yes beantwortet.
Wenn nun im Browser die IP-Adresse eingegeben wird, erscheint die Seite

Apache2 Debian Default Page - It works!

DocumentRoot von Apache auf /ssd legen

Verzeichnisse anlegen:

mkdir /mnt/ssd/www
mkdir /mnt/ssd/www/html

Das DocumentRoot ist in der Konfigurationsdatei 000-default.conf im Ordner /etc/apache2/sites-available. In dieser Datei wird der Eintrag DocumentRoot /var/www/html geändert in DocumentRoot /mnt/ssd/www/html:

cd /etc/apache2/sites-available
sudo nano 000-default.conf

ServerAdmin webmaster@localhost
#	DocumentRoot /var/www/html
DocumentRoot /mnt/ssd/www/html

Die Änderung speichern (Strg+o, Strg+x) und die apache2.conf ändern:

sudo nano /etc/apache2/apache2.conf

Den unteren Eintrag suchen und die Zeile <Directory /mnt/ssd/www/> ändern nach <Directory /mnt/ssd/www/>

<Directory /mnt/ssd/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

<Directory /mnt/ssd/www/>
# <Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

und anschließend Apache neu starten:

sudo service apache2 restart

PHP installieren

PHP ist eine Skriptsprache die hauptsächlich zur Erstellung von dynamischen Webseiten und Webanwendungen benutzt wird.

Mit folgendem Befehl wird PHP in der Version 7 installiert:

cd /mnt/ssd/www/html
sudo apt install php php-mysql -y

Um nun zu prüfen ob die PHP Installation erfolgreich war und um die PHP Informationen anzeigen zu lassen, im Verzeichnis /var/www/html/ eine neue Datei erstellen und mit dem Namen „phpinfo.php“ erstellen:

sudo nano /mnt/ssd/www/html/phpinfo.php

Der Inhalt der Datei phpinfo.php:

<?php
phpinfo();
?>

Die Datei mit Strg+o speichern und mit Strg+x beenden.

Um sich die PHP Informationen anzeigen zu lassen, die IP-Adresse/phpinfo.php/ des Pi in den Browser eingeben.

Der Aufruf erzeugt folgende Anzeige:

MySQL/MariaDB installieren

Bei MySQL handelt es sich um eine SQL-Datenbank. Content Management Systeme (CMS) wie z.B WordPress oder Typo arbeiten mit einer SQL-Datenbank.

Um MySQL zu installieren, folgenden Befehl eingeben:

sudo apt install mariadb-server php-mysql -y

Nach der Installation von MySQL muss die Konfiguration ausgeführt werden:

sudo mysql_secure_installation

Da bisher noch kein Passwort vergeben ist, mit Enter bestätigen. Danach sind noch folgende Fragen zu beantworten:

sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...

Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!

Set root password? [Y/n]

hier mit y + Enter um ein neues Passwort zu setzten.

Remove anonymous users? [Y/n]

hier entfernen wir die Anonymen User mit y + Enter

Disallow root login remotely? [Y/n]

diese Frage beantworten wir mit n + Enter

Remove test database and access to it? [Y/n]

diese Frage beantworten auch wir mit n + Enter

Reload privilege tables now? [Y/n]

diese Frage beantworten wir mit y + Enter, damit meine Änderungen direkt aktiv werden.

Wenn bei der Anmeldung in phpMyAdmin ein Fehler auftritt, muß möglicherweise ein neuer Benutzer erstellt werden, um sich anzumelden. Diese Befehle erstellen einen neuen Benutzer mit Name (admin) und dem bei der Installation vergebenen Passwort.

pi@WEBSERVER:/mnt/ssd/www/html $ sudo mysql --user=root --password
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 41
Server version: 10.3.17-MariaDB-0+deb10u1 Raspbian 10
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create user admin@localhost identified by 'password';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> grant all privileges on *.* to admin@localhost;
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> exit;
Bye
pi@WEBSERVER:/mnt/ssd/www/html $

phpMyAdmin installieren

Zur einfacheren Verwaltung der MySQL Datenbank sollte jetzt noch phpMyAdmin installiert werden. Mit dem Tool können einzelne Datenbanken angelegt und Werte in bestimmte Zellen der Datenbank geschrieben werden. Somit ein komfortables Administrations Tool für Datenbanken.

Die Installation wird mit folgendem Befehl gestartet:

sudo apt install phpmyadmin -y

Während der Installation werden einige Fragen gestellt. phpMyAdmin soll für den Apache2 Webserver konfiguriert werden. Somit wird der * wird mit der Leertaste gesetzt, dann mit dem Tabulator auf OK und mit Enter bestätigen.

Auch die nächste Frage wird mit Ja beantwortet.

Jetzt wird man aufgefordert ein Passwort zu vergeben. Hier sollte das gleiche Passwort wie bei der MySQL Installation benutzt werden.

Als nächstes muss phpMyAdmin konfiguriert werden. Die Konfiguration startet Ihr mit folgendem Befehl:

sudo dpkg-reconfigure phpmyadmin

Die Frage, ob phpMyAdmin neu installiert werden soll, mit Ja beantworten.

Die nächsten Fragen wie in der folgenden Beschreibung beantworten:

TCP/IP

localhost

3306

phpmyadmin

root@localhost

Passwort

Passwort

root

apache2

Das ganze endet beim ersten mal mit einem Fehler, hier muss der Schritt noch einmal mit den gleichen Einstellungen wiederholt werden „Wiederholen (Fragen überspringen)“.

Danach läuft alles erfolgreich durch. Jetzt ist es möglich auf phpMyAdmin zuzugreifen und sich einzuloggen.
IP-Adresse/phpmyadmin/ in den Browser eingeben.

Benutzername: root
Passwort: Das eben vergebene Passwort

FTP einrichten

Um komfortabel die Dateien auf den Webserver zu transferieren muss im letzten Schritt der Installation ein FTP Programm (File Transfer Protokoll) auf dem Webserver installiert und konfiguriert werden. Nach der Installation können Dateien bequem mit einem FTP Programm (z.B. FileZilla) auf den Webserver kopiert werden. Das Programm wird mit folgendem Befehl installiert:

sudo apt install proftpd -y

Wenn die Installation durchgelaufen ist, muss im nächsten Schritt ein User eingerichtet werden. Es wird ein virtueller User angelegt, welcher nur über FTP Dateien hochladen darf und keine weiteren Rechte besitzt. Um den User anzulegen, muss die Konfigurationsdatei von proftpd erweitert werden. Das geschieht mit dem Befehl:

sudo nano /etc/proftpd/proftpd.conf

Dann wird folgender Code am Ende des bereits vorhandenen Codes eingefügt.

DefaultRoot ~
AuthOrder mod_auth_file.c mod_auth_unix.c
AuthUserFile /etc/proftpd/ftpd.passwd
AuthPAM off
RequireValidShell off

Jetzt muss die Datei noch mit Strg+o/Strg+x abgespeichert werden. Danach in das Verzeichnis proftpd wechseln:

cd /etc/proftpd/

und mit folgendem Befehl einen neuen Benutzer anlegen. Für Benutzername den gewünschten Benutzernamen verwenden.

sudo ftpasswd --passwd --name Benutzername --uid 33 --gid 33 --home /mnt/ssd/www/ --shell /bin/false

pi@WEBSERVER:/etc/proftpd $ sudo ftpasswd --passwd --name pi --uid 33 --gid 33 --home /mnt/ssd/www/ --shell /bin/false
ftpasswd: creating passwd entry for user pi
ftpasswd: /bin/false is not among the valid system shells. Use of
ftpasswd: "RequireValidShell off" may be required, and the PAM
ftpasswd: module configuration may need to be adjusted.
Password:
Re-type password:
ftpasswd: entry created
pi@WEBSERVER:/etc/proftpd $

User ID 33 ist die ID des „www-data“ Users, also keine andere ID eintragen. Jetzt müssen dem User noch die Dateirechte vergeben werden. Dazu die folgenden Befehle eingeben:

# sudo chmod g+s /var/www
# sudo chmod 775 /var/www
# sudo chown -R www-data:www-data /var/www
sudo chmod g+s /mnt/ssd/www
sudo chmod 775 /mnt/ssd/www
sudo chown -R www-data:www-data /mnt/ssd/www

Der Raspberry Pi als Webserver ist jetzt fertig eingerichtet und muss neu gestartet werden. Dazu folgenden Befehl eingeben:

sudo reboot

Quellen:

http://techgeeks.de/raspberry-pi-als-webserver-mit-wordpress/
https://tutorials-raspberrypi.de/webserver-installation-apache2/
https://randomnerdtutorials.com/raspberry-pi-apache-mysql-php-lamp-server/