Raspberry Pi 3 Mod B / B+:    Apache: Rootverzeichnis und Port
 

Apache:
Root-Verz. ändern
Konigurationsdatei:
/etc/apache2/sites-available/000-default.conf
 
In dem Root- od. Wurzelverzeichnis befinden sich die auszuliefernden .HTML-Seiten. Nach der Installation lautet es   /var/www/html soll es einen anderen Namen erhalten, oder an einen anderen Ort verlegt werden, so geschieht dies in der oben genannten Konfigurationsdatei unter dem Eintrag DocumentRoot /verzeichnis ..
Der dortige Eintrag lautet anfänglich ..
DocumentRoot /var/www/html

eine Änderung könnte z.B. ..
DocumentRoot /var/www/httpdocs
.. lauten, was dann der Namensgebung anderer Servern entspräche. Es kann nach DocumentRoot natürlich ein beliebiges anderes Verzeichnis genannt werden. ..
 
Dabei scheint es Veränderungen im Apache2-Debian-8 Setup zu geben, so dass die obige Änderung alleine zu der Fehlermeldung 403 führte. Unter dem Link ..
 
www.gargi.org/showthread.php
?4600-Apache-2-bringt-You-don-t-have-permission-to-access-nach-Update-auf-
Debian-8
.. wurde der Hinweis gefunden, dass die Zeile 'Require all granted' in die Beschreibung der <Directory ..> eingefügt werden müsse, damit die Verlegung des ursprünglichen Root Verzeichnisses var/www/html auf ein anderes Verzeichnis gelingt. <Directory ..> Beschreibungen sind in der ursprünglichen Datei nicht vorhanden! In dem folgenden Listing wurden entsprechend zwei <Directory ..> Beschreibungen eingefügt, welche einen <VirtualHost> auf Port 80 und einen zweiten auf Port 8080 beschreiben.
 
 
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com



# Zugriff auf den Apache2-Server aus dem LAN oder WAN ..
# mit IP 192.168.0.x:80 (Verzeichnis /var/www/html)
# ***********************************************************************

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/

<Directory /var/www/html/>
Require all granted
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>


# Zugriff auf den Apache2-Server aus dem LAN oder WAN ..
# mit IP 192.168.0.x:8080 (Verzeichnis /var/www/httpdocs od. SD-Karte)
# ***********************************************************************
<VirtualHost *:8080>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/httpdocs/

<Directory /var/www/httpdocs/>
Require all granted
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>



# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn


ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
 
Anmerkungen:
1. AllowOverride All ist notwendig, damit folgend passwortgeschützte Verzeichnisse angelegt werden können, was bei AllowOverride None misslingt.
 
2. lauten die neuen Verzeichnisse in DocumentRoot und <Directory ..> bei beiden <VirtualHost *:Port> gleich, so lassen sich die Internetseiten aus dem gleichen Root-Verzeichnis aufrufen
 
3. werden für die <VirtualHost *:Port> unterschiedliche Verzeichnisse genannt, so wird je nach Portnummer auf die zwei unterschiedlichen Verzeichnisse zugegriffen.
 
Der letzte Fall kann interessant sein, wenn der Raspberry mit einer der PortNr auf Anfragen aus dem Internet antworten, und mit der zweiten PortNr. lokale Anfragen bearbeiten soll.
 
 
Apache:
Ports einrichten
Konigurationsdatei:
/etc/apache2/ports.conf

Die vorhergehende Beschreibung geht von den Ports 80 und 8080 aus. Damit diese verfügbar sind müssen sie in der Datei /etc/apache2/ports.conf ebenfalls eingetragen sein. (Bei Zugriffen aus dem WAN ist darauf zu achten, dass der
heimische Firewall-Rooter zuvor ebenfall auf einen dieser Ports eingestellt wurde.)
 
Angenommen der Raspberry Pi soll auf Port 8080 Anfragen hören und (beantworten) so sind folgende Einstellungen vorzunehmen.
 
sudo nano /etc/apache2/ports.conf
hier hinzufügen ..
# für den internen LAN-Aufruf 192.168.x.x .. (war schon vorhanden)
Listen 80
# für den externen WAN-Aufruf x.x.x.x .. (neuer Eintrag)
Listen 8080
 
Zuletzt den Apache2 neu starten durch:  /etc/init.d/apache2 reload
 
Der Server kann nun wie gewohnt über die interne LAN-IP ohne Portnummer angesprochen werden (z.b.: 192.168.x.x)
aber auch aus dem externen WAN durch http:// externeIP:8080
 
 
Apache:
Root-Verz. auf USB-SD-Karte verlegen
Achtung: Sollte bei folgender Anleitung nach Schritt 3 etwas schief gehen, so endet der Bootvorgang des Raspberry in einer Fehlermeldung, die nur der Superadministrator 'root' aufheben kann. Dieser sollte inzwischen ein Passwort erhalten haben.
 
Konigurationsdatei:
/etc/fstab
 
Das Wurzelverzeichnis des Apache-Servers lautet nach dessen Installation /var/www/html und liegt auf der SD-Karte des Betriebssystems. (Wurde dieser Name geändert, den neuen Namen benutzen). Möchte man für dieses Verzeichnis mehr Speicherplatz besitzen, kann man es auf eine der SD-Karten umlenken, die an einem der USB-Anschlüsse angesteckt sind.
 
Ausgangspunkt:
Es möge eine an einem Windows-Rechner formatierte SD-Karte vorliegen. Diese besitzt das Dateisystem FAT32. Die Karte möge die Bezeichnung RASPSD besitzen.
 
1. steckt man die Karte in einen der USB-Anschlüsse, und bootet den Raspberry-Rechner, so wird sie automatisch aktiviert und sie erscheint (mit ihren Daten) unter /media/pi/RASPSD. Mit dem FAT32 Dateisystem soll sie für den Apache-Server nicht, oder nur fehlerhaft zugänglich sein.
 
2. um sie dem Apache-Server anzubieten sollte sie ein Linux-Dateisystem besitzen. Sie muß also neu formatiert werden. Dies geschieht wie folgt ..
 
2.1 die Karte (im Zweifelsfall nach einem Neustart des Raspberry) abmelden ..
     umount /dev/sda1
2.2 die Karte neu formatieren. (hier mit dem Linux-Dateisystem ext3)
     mkfs.ext3 /dev/sda1
     Während der Formatierung wird eine UUID-Nr angezeigt.
     Diese muß für spätere Schritte notiert werden.
     Eine zweite SD-Karte besitzt die Bezeichnung ..   sdb1
 

Anmerkung: Wird der Raspberry nach diesem Schritt neu gebootet, ist die Karte unter /media/pi/UUID-Nr zu sehen. Das Verzeichnis /media/pi/RASPSD liegt brach.
 
4. Damit die Karte wieder unter RASPSP erscheint und dort ihr Inhalt nach einem Bootvorgang zu sehen ist, muss sie in der Datei fstab eingetragen werden (1.Zeile) .. die zweite Zeile bindet das Verzeichnis RASPSD/www/html zudem an den Apache-Server, der nun anstelle von /var/www/html hierher zugreift.
 
nano /etc/fstab
 
# diese Zeile bindet die USB-SD-Karte bei einem Bootvorgang des Raspberry
# unter dem Namen RASPSD ein.
UUID=die UUID-Nr des Laufwerks /media/pi/RASPSD ext3 defaults 0 0
 
# diese Zeile verlegt das Root-Verzeichnis /var/www/html auf das
# Verzeichnis /www/html der USB-SD-Karte RASPDAT um, das zuvor angelegt
# worden sein sollte.
/media/pi/RASPDAT/html/   /var/www/html/  none  bind  0  0
 
Anmerkungen:
1. Inwieweit die einzelnen Elemente der beiden Anweisungen tatsächlich durch <tabs> getrennt sein müssen, wurde nicht weiter untersucht.
 
2. Das Verzeichnis /var/www/html des Apache Servers zeigt folgend die gleichen Inhalte wie das Verzeichnis /media/pi/RASPSDT/html der SD-Karte.
 
3. wird die USB-SD-Karte entfernt, endet der Boot-Vorgang des Rechners in einem Fehler, (den nur der Administrator 'root' aufheben kann.) Meldet man sich nun als Benutzer root an, müssen in der Datei /etc/fstab nur die zwei eingefügten Zeilen durch ein # gesperrt werden. Nach einem erneuten Bootvorgang ist der Apache-Server mit seinem alten /var/www/html -Verzeichnis wieder aktiv. (Es macht also Sinn, in diesem einige Notdateien.html zu belassen.)
 
 
Apache:
Passwortgeschützte
Verzeichnisse
Konigurationsdatei:
/etc/apache2/apache2.conf
 
Manchmal ist es sinnvoll, Verzeichnisse anzulegen die durch einen Benutzernamen und ein Passwort geschützt sind. Die einfachste Methode ist es, in dem zu schützenden Verzeichnis die Dateien .htaccess und .htpasswd anzulegen, sowie dem Apache Server mitzuteilen, dass er bei solchen Verzeichnissen die beiden Dateien auswerten soll. (der Punkt vor den Dateinamen deutet an, dass diese Dateien versteckt sind.)
 
Achtung:

Wurde der Apache-Server neu installiert, so muß in der Datei ..
/etc/apache2/apache2.conf
.. in der folgend gezeigten Befehlsfolge, die sich im unteren Drittel der Datei befindet, die Zeile AllowOverride von ihrem Parameter None auf All gesetzt werden.
 
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
 
.. den Apache-Server neu starten mit:   /etc/init.d/apache2 reload
 
Nun können die Dateien .htaccess und .htpasswd im bereits angelegten und zu schützenden Verzeichnis (hier var/www/html/SAVE) angelegt werden..
 
~# sudo nano var/www/html/SAVE/.htaccess
Mit dem Texteditor nano sollten folgende Zeilen in die Datei geschrieben werden, wobei AuthUserFile den Ort der Passwort-Datei .htpasswd beschreibt (Sie darf andere Namen tragen und in anderen Verzeichnissen untergebracht sein). Auth Name ist ein Text, der später im Fenster der Passwortabfrage erscheint ..
 
AuthType Basic
AuthName "beliebiger Text"
AuthUserFile /var/www/html/SAVE/.htpasswd
require valid-user
 
Datei mit [Crtl][o] speichern und den Texteditor nano durch [Crtl][x] verlassen. ..
 
Die Datei .htpasswd wird mit dem Progamm htpasswd bearbeitet. -c bedeutet, dass die Datei neu angelegt werden soll. Beim Eintrag eines zweiten Benutzers fällt das -c weg. Der Benutzer möge HERBERT heißen ..
 
~# htpasswd -c /var/www/html/SAVE/.htpasswd HERBERT
.. das Programm htpasswd legt die Datei .htpasswd an und fragt zwei mal nach dem Passwort das Herbert haben soll. Dieses wird verschlüsselt in .htpasswd abgelegt.
 
In dem Verzeichnis SAVE sollten natürlich Dateien enthalten sein, wie eine index.html oder test.php ... werden diese Dateien wie üblich über einen Link aufgerufen, so erscheint zunächst ein Fenster, welches nach dem Benutzer und dessen Passwort fragt.
 
 

www.GoBlack.de