raspberry pi zero: Kein Zugriff auf webserver mit lighttpd

OP #7772196
Lesenswert?

Guten Morgen,

auf meinem pi soll ein Webserver zum Einsatz kommen. Dazu habe ich den lighttpd installiert und konfiguriert.

https://raspberry.tips/raspberrypi-tutorials/raspberry-pi-als-webserver-teil-1

Mit diesem Webserver soll die gemessene Temperatur angezeigt werden. Dazu habe ich folgende Anleitung auf meinem pi umgesetzt.

https://raspberry.tips/hausautomatisierung/wetteraufzeichnung-mit-raspberry-pi-ds18b20

Leider ist es so, dass ich keinen Zugriff auf die php Seite index.php habe. => http://192.168.178.32/index.php Fehlermeldung: Not Found The requested URL was not found on this server. Apache/2.4.62 (Raspbian) Server at 192.168.178.32 Port 80

Was mir nach der EInrichtung aufgefallen ist, dass ich keinen Zugriff auf das www Verzeichnis habe. Wahrscheinlich müssen die Zugriffe für diesen Ordner und auch Dateien anders eingestellt werden.

OP #7772226
Lesenswert?

Hallo Stephan,

in der config Datei habe ich Port 80 auf 8080 bereits abgeändert.

lighttpd.conf:

server.document-root = "/var/www/html" server.upload-dirs = ( "/var/cache/lighttpd/uploads" ) server.errorlog = "/var/log/lighttpd/error.log" server.pid-file = "/run/lighttpd.pid" server.username = "www-data" server.groupname = "www-data" server.port = 8080

Wenn ich folgende IP Adresse http://192.168.178.32 starte, erscheint der Apache2 Debian Default Page.

#7772308
Lesenswert?

Dann kontrollier nochmal, ob 192.168.178.32 auch wirklich die IP vom richtigen RasPi ist... Und ob es wirklich vom Apache ausgeliefert wird (Browser-Entwicklertools, Netzwerk-Tab), oder ob es die Raspian-Default-Webseite ist, die unter /var/www/html abgelegt ist, und die jetzt eben vom lighthttpd verwendet wird.

Übrigens wirst du in deiner lighthttpd-Config noch PHP (mod_fastcgi) einschalten müssen, wenn du damit PHP-Seiten ausliefern willst.

#7772322
Lesenswert?

Schau nach ob dein lighttpd auch wirklich läuft, und welchen Port der offen hat. z.B. lsof -p $(cat /run/lighttpd.pid) oder netstat -alnp | grep lighttpd

schau nach, ob du den apache auch wirklich deinstalliert und beendet hast, und keiner mehr läuft.

ps aux | grep apache

#7772360
Lesenswert?

1
$ ps ax|grep "RöcksRödelDiWachsInneGehölzenen"
2
  18117 pts/0    S+     0:00 grep RöcksRödelDiWachsInneGehölzenen

grep sucht nach dem Suchbegriff und findet ihn auch. Als Argumant an sich selbst. Wenn Apache noch liefe, würdest du so etwas sehen:

1
$ ps ax|grep "apache"
2
   1774 ?        Ss     0:00 /usr/sbin/apache2 -k start
3
   1775 ?        S      0:00 /usr/sbin/apache2 -k start
4
   1776 ?        S      0:00 /usr/sbin/apache2 -k start
5
   1777 ?        Sl     0:00 /usr/sbin/apache2 -k start
6
   5073 ?        Sl     0:00 /usr/sbin/apache2 -k start
7
  18202 pts/0    S+     0:00 grep apache
OP #7772379
Lesenswert?

Im Ordner /var/www/ habe ich mal eine info Datei erzeugt.

info.php

1
phpinfo();
2
?>

Leider gibt es hier ein Verbindungsfehler.

http://192.168.178.32/info.php

In der config Datei (sudo nano /etc/lighttpd/lighttpd.conf) habe ich auch den Port auf 8080 eingestellt und in modules den Eintrag "mod_fastcgi" hinzugefügt Ich muss noch erwähnen ich habe php installiert php5 kann ich bei mir nicht installieren.

#7772397
Lesenswert?

Zo R. schrieb:

Ja ist soweit alles korrekt. Ok die php Datei da habe ich noch was vergessen.

Jetzt wird "404 Not Found" angezeigt.

Warum versucht du nicht erst einmal eine einfache Minimalkonfiguration? Ohne Patch-Hack-Patch. Nur eine ›index.html‹ welche als Gruppe www-data die Rechte ›r‹ besitzt. Wenn das läuft, dann kannst du weiter machen.

Ahhh … hat sich dann erledigt.

#7772408
Lesenswert?

Zo R. schrieb:

Auf der folgenden Seite https://raspberry.tips/hausautomatisierung/wetteraufzeichnung-mit-raspberry-pi-ds18b20 wird nicht erwähnt was in der config Datei lighttpd.conf angepasst werden muss.

na, auf der Seite wird mit einem Haufen hässlicher Hacks irgendwie eine im Browser abrufbare Temperaturaufzeichnung zusammengeschustert. Da geht es NICHT um die Konfiuguration eines Webservers.

Du gehst ja auch nicht zum Aldi und möchtest dort z.B. eine Ultraschalluntersuchung durchführen lassen?

#7772769
Lesenswert?

auch wenn es ohne "Grafikschrott" irgendwie funktioniert ist und bleibt das ein hässliches Workaround-Gewürge.

Du hast offensichtlich keinerlei Erfahrung mit Webservern, vielleicht minimale Linux-Kenntnisse, wenig Erfahrung mit der Erstellung von Webseiten, ggf. auch noch wenig Programmiererfahrung.

Daher solltest du das ganze Projekt in mehrere kleine Teile aufteilen. Einen Apache oder lighttpd soweit zum Laufen zu bringen, dass er html und php ausliefern kann ist kein Vollzeitjob. Dabei kannst du dir auch gleich Kenntnisse über Benutzerrechte und -gruppen unter Linux aneignen.

Danach beschäftigst du dich zumindest grundlegend mit Webseiten (soviel wie du halt für dein Prjekt brauchst)

und dann, wenn das alles funktioniert kannst du die Temperatur- und Wetteranzeige oben drüber stülpen.


Webseiten und Apache kannst du auch vertauschen. Ich gehe davon aus, dass du Windows-User bist, da kannst du dir einen fertigen Apache-Stack (z.B. Wamp, Xamp, je nach Geschmack auch was anderes, von mir aus auch das komische Microsoft-Dings (IAS?)) installieren und lokal probieren.

P.S. Meine Lösung für meine Wetterdaten-Anzeige: Raspi + Cron + RTL433 + Influx + Grafana ;-)

OP #7773025
Lesenswert?

Hallo Daniel,

danke für deinen Beitrag. Aktuell ist es ja so, dass ich nur mal einen Temperaturwert auf einem Webserver ausgeben kann. Für die Zukunft sollen mehrer esp32 benutzt werden, diese sollen zyklisch Sensordtaen an den raspberry pi zero senden. Auf einem Webserver sollen dann die empfangen Daten visualisiert dargestellt werden. Das mit grafana wird wohl auf einem pi zero wenig Sinn machen aufgrund des geringen Speicherplatzes. Gibt es da womöglich eine andere Alternative?

#7773154
Lesenswert?

Zo R. schrieb:

Das mit grafana wird wohl auf einem pi zero wenig Sinn machen aufgrund des geringen Speicherplatzes. Gibt es da womöglich eine andere Alternative?

gnuplot ist eine scriptsprache, die auch auf einem Raspi_1 läuft, sauschnell, es gibt 1001 Anleitungen im Netz dafür. Beispiel als SVG in der Anlage.

Interessant ist auch https://gertingold.github.io/pythonnawi/graphics.html

Angehängte Dateien:
OP #7773442
Lesenswert?

Hallo,

ich habe nun mal gnuplot installiert. Folgendes habe ich mal soweit auf dem zero implementiert. Leider passiert gar nicht. Es werden nicht die entsprechenden Dateien erzeugt. Ich vermute crontab funktioniert nicht.

==> gnuplot_temp_ds1820.conf:

1
set title "Temperature DS1820"
2
set xlabel "Minutes (mins)"
3
set ylabel "Temperature (°C)"
4
set terminal png size 620,360
5
set output "/var/www/html/gnuplot_tempds1820.png"
6
set xdata time
7
set timefmt "%s"
8
set format x "%H:%M"
9
set grid
10
set key left box
11
plot "/home/pi/Temperatur/gnuplot_temp_ds1820.dat" using 1:2 title "Temp" with lines

==> gnuplot_temp_ds1820.sh:

1
#!/bin/bash
2
 
3
PLOT_CONFFILE="/home/pi/Temperatur/gnuplot_temp_ds1820.conf"
4
PLOT_DATAFILE="/home/pi/Temperatur/gnuplot_temp_ds1820.dat"
5
PLOT_DATETIME=$(/bin/date +%s)
6
PLOT_TEMP=$(/usr/bin/python /home/pi/Temperatur/get_temp_ds1820.py)
7
 
8
echo "$PLOT_DATETIME $PLOT_TEMP" >> $PLOT_DATAFILE
9
cat $PLOT_CONFFILE | /usr/bin/gnuplot

crontag -e:

1
1 * * * * /home/pi/Temperatur/gnuplot_temp_ds1820.sh
#7773448
Lesenswert?

Zo R. schrieb:

Ich vermute crontab funktioniert nicht.

Jaaa, dass ist so ein Ding mit den Vermutungen…

Ich bin übrigens extrem überrascht. Du hast es geschafft, eine sehr einfache Aufgabe in einen atemberaubend umständlichen Prozess zu konvertieren.

Da du ja sowieso ein Python Programm aufrufst:

  • Die aktuelle Zeit lässt sich dort direkt ermitteln
  • Die Sensordaten werden ja schon in Python empfangen.
  • Es existiert matplotlib mit pyplot. Die komplette Erzeugung der Grafik (an der passenden Stelle) lässt sich dort bequem erledigen.
OP #7773483
Lesenswert?

ls -la /var/www/html/

1
drwxr-x--- 2 pizero pizero 4096 Nov 13 11:20 .
2
drwxr-xr-x 3 root   root   4096 Nov 12 14:17 ..
3
-rw-r--r-- 1 pizero pizero  947 Nov 11 20:40 index.php
4
-rw-r--r-- 1 pizero pizero   21 Nov 11 15:39 info.php
5
-rw-r--r-- 1 pizero pizero  410 Nov 11 20:24 receiveMessage.php
6
-rw-r--r-- 1 pizero pizero  644 Nov 11 20:31 requestMessage.py

ls -la /var/www/

1
drwxr-xr-x  3 root   root   4096 Nov 12 14:17 .
2
drwxr-xr-x 12 root   root   4096 Nov  4 15:38 ..
3
drwxr-x---  2 pizero pizero 4096 Nov 13 11:20 html
4
-rw-r--r--  1 root   root   1175 Nov 11 10:30 index.php
5
-rw-r--r--  1 root   root   2437 Nov 11 10:30 style.css

Jetzt habe ich auf die index.php via Webbrowser keinen Zugriff mehr. Hab da wohl in den Zugriffsrechten was geändert.

#7773489
Lesenswert?

wie ich sehe lernst du grad auf die harte Tour - schau was ich dir schon mal vorgeschlagen habe und teil das Ganze in mehrere Teilprojekte auf.

im Moment ist dein größtes Problem deine offensichtlich nicht vorhandenen Kenntnisse der Rechteverwaltung. Das musst du dringend ändern bevor es auch nur ein bisschen Sinn macht, das ganze weiter zu verfolgen.

Du willst ja auch nicht in Zukunft jedes Mal wenn eine Kleinigkeit zu ändern ist tage- oder sogar wochenlang an so Kleinigkeiten herumrätseln (um nicht zu sagen pfuschen)?

#7773493
Lesenswert?

Zo R. schrieb:

Jetzt habe ich auf die index.php via Webbrowser keinen Zugriff mehr. Hab da wohl in den Zugriffsrechten was geändert.

Mit ›Trial and Error‹ kommt man nur dann weiter, wenn man zumindest eine grobe Vorstellung hat von den Dingen die man anrichtet.

Kleiner Tipp am Rande: Nur weil checkaa2oo3 im Youtube Video bei fünfundvierzig Minuten, siebzehn Sekunden etwas selten Dämliches macht, so besteht dennoch kein Nachahmungszwang.

In /var/www/ haben:

1
-rw-r--r--  1 root   root   1175 Nov 11 10:30 index.php
2
-rw-r--r--  1 root   root   2437 Nov 11 10:30 style.css

normalerweise nichts zu suchen.

/var/www/html/ sollte rwx für den Eigner haben, rx für Gruppe und Andere.

Und Gruppe sollte natürlich www-data sein. Also (als root) im /var/www/ Verzeichnis:

1
chown root:www-data html
2
chmod 755 html

Und mach dich dringend mit den Basics vertraut.

#7773541
Lesenswert?

Norbert schrieb:

  • Es existiert matplotlib mit pyplot. Die komplette Erzeugung der Grafik (an der passenden Stelle) lässt sich dort bequem erledigen.

Der Vollständigkeit halber sei darauf hingewiesen, daß es neben der an Matlab angelehnten Matplotlib noch eine Reihe anderer Visualisierungsbibliotheken gibt, die vor allem für Webanwendungen oft besser geeignet sind. Zum Beispiel die etwas bekannteren Libraries Seaborn (das auf Matplotlib aufbaut), Bokeh oder Plotly und Plotly Express, aber auch weniger bekannte wie Altair, Pygal, Folium und, nicht zu vergessen, d3blocks, das die Fähigkeiten der bekannten Javascript-Bibliothek D3.js unter Python bereitstellt.

Viele dieser Bibliotheken bieten Features, die unter Matplotlib nicht zur Verfügung stehen, und können zum Beispiel interaktive Grafiken fürs Web erzeugen. Zudem fühlen sich die meisten davon für Python-Entwickler etwas "pythonischer" an als die an Matlab angelehnte Matplotlib. Viel Spaß!

#7773555
Lesenswert?

Zo R. schrieb:

1
> set output "/var/www/html/gnuplot_temp_ds1820.png"
2
>
1
>  cannot open file; output not changed
2
> system error: Permission denied
3
>

Normale Benutzer dürfen nicht in /var/www/html/ schreiben. Du könntest deinen Job in der Crontab für den Apache-Benutzer ("www-data") einstellen ("crontab -u www-data -e"), so daß er mit dessen Rechten läuft. Oder Du richtest Dir ein Unterverzeichnis in /var/www/html/ ein, in das Dein Benutzer schreiben und aus dem der Apache-Server lesen darf.

Wenn Du ein Linux benutzen möchtest, halte ich es grundsätzlich für sinnvoll, Dich mit Datei- und Benutzerrechten unter Linux zu beschäftigen. Viel Erfolg!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren