Django-webseite mit Nginx auf port 80 anzeigen

Django, Flask, Bottle, WSGI, CGI…
Antworten
Septias
User
Beiträge: 80
Registriert: Freitag 24. Juni 2016, 19:15

Hallo,

ich hab mit Hilfe dieses Tutorials https://uwsgi-docs.readthedocs.io/en/la ... nginx.html meine Webseite mit Hilfe von uwsgi und Nginx für Port 8000 eingerichtet. Wie kann ich es jetzt einrichte, dass ich ohne einen Port anzugeben auf meine Webseite komme ? Ich habe schon den listen-Port auf 80 gewechselt, was aber leider nichts bringt...

Wie kann ich das machen ?
Für alle meine Codebeispiele gilt: Äußert bitte jegliche Art von Verbesserungsvorschlägen. Ich versuche immer meinen Stil zu verbessern und wenn man mir einfach sagt, was ich falsch machen, ist es um einiges einfacher, als wenn ich es mühselig selber herausfinden muss :-)
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Septias: Den `listen`-Port auf 80 zu setzen sollte aber was bringen. Du hast danach auch den Webserver neu gestartet, damit der die Konfiguration auch übernimmt?
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Septias
User
Beiträge: 80
Registriert: Freitag 24. Juni 2016, 19:15

Ne, Neustarten bringt leider nichts. Da ich die Index-seiten aus /var/www/html gelöscht habe wir da jetzt nur 403 - Forbidden angezeigt. Bei Zugriff auf :8000 wird "Unable to connect" gesagt.
Für alle meine Codebeispiele gilt: Äußert bitte jegliche Art von Verbesserungsvorschlägen. Ich versuche immer meinen Stil zu verbessern und wenn man mir einfach sagt, was ich falsch machen, ist es um einiges einfacher, als wenn ich es mühselig selber herausfinden muss :-)
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wie sieht denn die nginx.conf aus?
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Du hast also gleichzeitig noch einen Apache-Server am Laufen?
Was sagen denn die Logs?
Septias
User
Beiträge: 80
Registriert: Freitag 24. Juni 2016, 19:15

Als ich mich jetzt noch einmal angemeldet habe hat es funktioniert... warum weiß ich jedoch nicht.

Trotzdem Danke für die Hilfe
Für alle meine Codebeispiele gilt: Äußert bitte jegliche Art von Verbesserungsvorschlägen. Ich versuche immer meinen Stil zu verbessern und wenn man mir einfach sagt, was ich falsch machen, ist es um einiges einfacher, als wenn ich es mühselig selber herausfinden muss :-)
Septias
User
Beiträge: 80
Registriert: Freitag 24. Juni 2016, 19:15

Okay, jetzt gibt es einen echt komischen Fehler. Vorhin habe ich geschrieben, dass es funktioniert, weil ich von einem Ubuntu Computer aus darauf zugreifen kann. Das selbe Gild für mein Handy und Edge. Aber bei Firefox bekomme ich ein 403 - Forbidden. Warum ??
Für alle meine Codebeispiele gilt: Äußert bitte jegliche Art von Verbesserungsvorschlägen. Ich versuche immer meinen Stil zu verbessern und wenn man mir einfach sagt, was ich falsch machen, ist es um einiges einfacher, als wenn ich es mühselig selber herausfinden muss :-)
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Wir kennen Dein Netzwerk, Deine Konfigurationen, Dein Betriebssystem nicht.
Septias
User
Beiträge: 80
Registriert: Freitag 24. Juni 2016, 19:15

Das liegt glaub nicht an meinem System zuhause, es bekommen alle Möglichen Leute 403 - Forbidden. Kann es sein, dass manche Requests noch an Apache2 geleitet werden ? Anders kann ich mir es irgendwie nicht vorstellen.
Für alle meine Codebeispiele gilt: Äußert bitte jegliche Art von Verbesserungsvorschlägen. Ich versuche immer meinen Stil zu verbessern und wenn man mir einfach sagt, was ich falsch machen, ist es um einiges einfacher, als wenn ich es mühselig selber herausfinden muss :-)
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Septias: Wenn der Apache auf Port 80 horcht dann nicht nur manche Anfragen sondern alle. Wenn er nicht auf Port 80 horcht, dann eigentlich eher nicht. Du kannst ihn ja einfach mal beenden und schauen was dann passiert. Der Apache kann mit eventuellen Fehlern dann ja nichts mehr zu tun haben, wenn er nicht läuft.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Septias
User
Beiträge: 80
Registriert: Freitag 24. Juni 2016, 19:15

Okay, hatte keine Ahnung, welche Einstellung bei vorinstalliertem Apache für Froxlor gemacht sind, deshalb die Frage. Der Apacheserver war aber die ganze Zeit aus.
Für alle meine Codebeispiele gilt: Äußert bitte jegliche Art von Verbesserungsvorschlägen. Ich versuche immer meinen Stil zu verbessern und wenn man mir einfach sagt, was ich falsch machen, ist es um einiges einfacher, als wenn ich es mühselig selber herausfinden muss :-)
Septias
User
Beiträge: 80
Registriert: Freitag 24. Juni 2016, 19:15

Könnte das den Zugriff verweigern, weil die User zu groß sind ? : client_max_body_size 75M;
Für alle meine Codebeispiele gilt: Äußert bitte jegliche Art von Verbesserungsvorschlägen. Ich versuche immer meinen Stil zu verbessern und wenn man mir einfach sagt, was ich falsch machen, ist es um einiges einfacher, als wenn ich es mühselig selber herausfinden muss :-)
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Hast Du mal nachgelesen, was `client_max_body_size` bewirkt?
nezzcarth
User
Beiträge: 1632
Registriert: Samstag 16. April 2011, 12:47

Du kannst du dir ja mal als root mit 'netstat -tlpn'/'ss -tlpn' anzeigen lassen, ob da etwas auf Port 80 lauscht und was.
Septias
User
Beiträge: 80
Registriert: Freitag 24. Juni 2016, 19:15

Wenn ich 'ss -tlpn' verwende wird mir für Port 80 das hier angezeigt:

Code: Alles auswählen

LISTEN      0      128                                                            :::80                                                            :::*      users:(("nginx",pid=21872,fd=7),("nginx",pid=21871,fd=7),("nginx",pid=21870,fd=7),("nginx",pid=21869,fd=7),("nginx",pid=21868,fd=7))
Ist es normal, dass da mehrere Nginx-Einträge sind ?
Aber das ist nichtmal das Wichtige, weil ich jetzt weiß, warum es nicht funktioniert. Der Fehler ensteht, weil Firefox irgendwie auf /var/www/html zugreifen will, und die anderen Browser nicht. Deshalb dann der 403, weil der Server keine Berechtigung für das Verzeichnis hat.
Das hier steht dabei in dem Log:

Code: Alles auswählen

2018/10/06 14:17:26 [error] 21872#0: *1 directory index of "/var/www/html/" is forbidden, client: ***.19.***.155, server: _, request: "GET / HTTP/1.1", host: "www.example.de"
Wie kann ich das beheben ?
Für alle meine Codebeispiele gilt: Äußert bitte jegliche Art von Verbesserungsvorschlägen. Ich versuche immer meinen Stil zu verbessern und wenn man mir einfach sagt, was ich falsch machen, ist es um einiges einfacher, als wenn ich es mühselig selber herausfinden muss :-)
nezzcarth
User
Beiträge: 1632
Registriert: Samstag 16. April 2011, 12:47

Septias hat geschrieben: Samstag 6. Oktober 2018, 13:25 Ist es normal, dass da mehrere Nginx-Einträge sind ?
Ja. Es gibt einen Master Prozess und mehrere Worker.
Der Fehler ensteht, weil Firefox irgendwie auf /var/www/html zugreifen will, und die anderen Browser nicht. Deshalb dann der 403, weil der Server keine Berechtigung für das Verzeichnis hat.
Firefox kommt nicht von alleine auf die Idee, diesen Pfad (einen absoluten Pfad auf dem Server) anzufordern. Firefox wird von irgendeiner Stelle mitgeteilt, z.B. über einen HTTP-Redirect, dass es diesen Pfad anfordern soll. Das deutet auf einen Konfigurationsfehler hin.
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Wir kennen Deine Konfiguration nicht! Wenn Du mit Firefox auf / zugreifst, dann sollte das keinen Unterschied machen, wie wenn Du mit Chrome auf / zugreifst.
Septias
User
Beiträge: 80
Registriert: Freitag 24. Juni 2016, 19:15

Also das hier ist meine Konfigdatei:

Code: Alles auswählen

# mysite_nginx.conf

# the upstream component nginx needs to connect to
upstream django {
    # server unix:///path/to/your/mysite/mysite.sock; # for a file socket
    server 127.0.0.1:8001; # for a web port socket (we'll use this first)
}
# configuration of the server
server {
    # the port your site will be served on
    listen      80;
    # the domain name it will serve for
    server_name dreiecksturnier.de; # substitute your machine's IP address or FQDN
    charset     utf-8;

    # max upload size
    client_max_body_size 75M;   # adjust to taste

    # Django media
    location /media  {
        alias /home/dreiecksturnier/webseite/dreiecksturnier-webseite/dreiecksturnier/media;  # your Django project's media files - amend as required
    }

    location /static {
        alias /home/dreiecksturnier/webseite/dreiecksturnier-webseite/static; # your Django project's static files - amend as required
    }
    # Finally, send all non-media requests to the Django server.
    location / {
        uwsgi_pass  django;
        include     /home/dreiecksturnier/webseite/uwsgi_params; # the uwsgi_params file you installed
    }
}
Das hier meine uwsgi_params:

Code: Alles auswählen


uwsgi_param  QUERY_STRING       $query_string;
uwsgi_param  REQUEST_METHOD     $request_method;
uwsgi_param  CONTENT_TYPE       $content_type;
uwsgi_param  CONTENT_LENGTH     $content_length;

uwsgi_param  REQUEST_URI        $request_uri;
uwsgi_param  PATH_INFO          $document_uri;
uwsgi_param  DOCUMENT_ROOT      $document_root;
uwsgi_param  SERVER_PROTOCOL    $server_protocol;
uwsgi_param  REQUEST_SCHEME     $scheme;
uwsgi_param  HTTPS              $https if_not_empty;

uwsgi_param  REMOTE_ADDR        $remote_addr;
uwsgi_param  REMOTE_PORT        $remote_port;
uwsgi_param  SERVER_PORT        $server_port;
uwsgi_param  SERVER_NAME        $server_name;
und an der normalen Serverkonfiguration habe ich nichts geändernt. Also kann ich mir kaum vorstellen, warum ich solche Fehler bekomme. Kann es irgendwie sein, dass Apache2 irgendwelche Konfigurationen geändert hat ? (Sry habe keine Ahung von Linux)
Für alle meine Codebeispiele gilt: Äußert bitte jegliche Art von Verbesserungsvorschlägen. Ich versuche immer meinen Stil zu verbessern und wenn man mir einfach sagt, was ich falsch machen, ist es um einiges einfacher, als wenn ich es mühselig selber herausfinden muss :-)
nezzcarth
User
Beiträge: 1632
Registriert: Samstag 16. April 2011, 12:47

<deine-domain>.de und www.<deine-domain>.de sind zwei verschiedene Dinge. Hast du daran beim Aufruf gedacht? Das scheint das Problem zu sein. In deiner Konfiguration sehe ich nur die Variante ohne www, du musst diese Subdomain bei 'server_name' mit aufführen, wenn du sie verwenden möchtest.
Septias
User
Beiträge: 80
Registriert: Freitag 24. Juni 2016, 19:15

Ja, das war es, vielen vielen Dank !
Für alle meine Codebeispiele gilt: Äußert bitte jegliche Art von Verbesserungsvorschlägen. Ich versuche immer meinen Stil zu verbessern und wenn man mir einfach sagt, was ich falsch machen, ist es um einiges einfacher, als wenn ich es mühselig selber herausfinden muss :-)
Antworten