[bottle] Startschwierigkeiten

Django, Flask, Bottle, WSGI, CGI…
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

Hallo Leute.

Ich habe Startschwierigkeiten mit bottle und bekommen immer einen: "Internal Server Error".

Vom Prinzip her probiere ich nur ein "Hello World!" Script von der bottle Dokumentation aus.

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from bottle import route, run

@route('/')
def index():
    return "Hello World!"

run(host='barfooz.de', port=80)
Die selbe Datei Funktioniert aber mit dem Script:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import cgitb
cgitb.enable()

print "Content-Type: text/html;charset=utf-8\n"
print "Hello World"
Nun steh ich etwas auf dem Schlauch. Ich hoffe Ihr könnt mir ein paar Tipps geben. ;)

Gruß, deadshox
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Die Fehlermeldung "Internal Server Error" ist ziemlich ungenau, vllt. zeigst du mal den ganzen Traceback.

Ansonsten scheint mir das der falsche Weg zu sein, da du versuchst den Host zu ändern (kann mich aber auch täuschen) - im Regelfall benutzt man den wsgiref.SimpleServer nur für Entwicklungszwecke und damit auf localhost.

Siehe hier: http://bottle.paws.de/docs/tutorial.html#deployment
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, ... and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
Das ist die komplette Meldung.

Wie gehe ich es denn richtig an?
.robert
User
Beiträge: 274
Registriert: Mittwoch 25. April 2007, 17:59

Versuch mal, was passiert, wenn du als Host "localhost" einträgst.
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

sonst `bottle.debug(True)`
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from bottle import route, run, debug

@route('/')
def index():
    return "Hello World!"

debug(True)
run(host='localhost', port=80)
Die Meldung verändert sich leider nicht. ;(
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

deadshox hat geschrieben:Die Meldung verändert sich leider nicht. ;(
Welche Python-Version und welches Betriebssystem setzt du ein?
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

Auf dem Server läuft ein Debian Lenny mit Python2.5. Habe aber mit der Administration nichts zu tun.
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

Die Fehlermeldung kommt nicht von bottle, sondern wahrscheinlich von deinem Webserver, der versucht, das Skript als CGI-Skript aus zu führen. Das geht zwar (siehe Beispiel unten) aber wird nicht empfohlen.

Bottle als CGI-Script verwenden:

Code: Alles auswählen

bottle.run(server=bottle.CGIServer)
Bottle: Micro Web Framework + Development Blog
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Könnte ein Rechteproblem sein.
Versuch mal einen anderen Port > 5000, z.B. 8080. Port 80 geht nur als root, afaik.
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

ms4py hat geschrieben:Könnte ein Rechteproblem sein.
Versuch mal einen anderen Port > 5000, z.B. 8080. Port 80 geht nur als root, afaik.
Der Server laeuft ja, also ist das nicht das Problem.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

Leider Funktioniert das:

Code: Alles auswählen

bottle.run(server=bottle.CGIServer)
auch nicht.
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

deadshox hat geschrieben:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from bottle import route, run, debug

@route('/')
def index():
    return "Hello World!"

debug(True)
run(host='localhost', port=80)
Die Meldung verändert sich leider nicht. ;(
Wenn sich dabei an der Fehlermeldung nichts ändert, hat das definitiv nichts mit Bottle, sondern mit der Server-Konfiguration zu tun.
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

Aber ich will doch nur ein ersatz für das CGI Script, wie das 2. Script im ersten Post.

FastCGI und WSGI sollen aber laut meines Administrator auch Funktionieren. Nur sehe ich da nicht gant durch wie bottle mit WSGI Funktionieren soll.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

deadshox hat geschrieben:bekommen immer einen: "Internal Server Error"
Das kann viele Gründe haben und es ist so einfach festzustellen, welcher Grund es bei dir ist.

Deswegen hatte ich vor längerer Zeit diese Seite ins leben gerufen:
http://wiki.python-forum.de/Web-Skripte ... %20bringen

Geht mal die "Liste der möglichen Ursachen" durch...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

Hallo Jens.

Ich bin deine Liste durchgegangen, leider ohne erfolg.

Das mod_python Script läuft aber: http://python.barfooz.de/test.py
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Du must irgendwas übersehen haben ;)

Wenn das mod_Python test script läuft, dann ist das schon mal ein Ausgangspunkt. Vergleiche, was bei dem anders ist zu den anderen Sachen... Also chmod, Datei/Verzeichnis Rechte, .htaccess, Zeilenenden, shebang usw. Halt das was in der Liste steht...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

Heh. ^^

Es war diese Zeile

Code: Alles auswählen

print "Content-Type: text/html;charset=utf-8\n"
die den Unterschied machte.

Leider gibt es noch immer noch nicht das gewünschte Ergebnis.
server hat geschrieben:Bottle server starting up (using WSGIRefServer (barfooz.de:80))... Listening on http://barfooz.de:80/ Use Ctrl-C to quit.
Aber danke schon mal, das lässt mich aufatmen und noch hoffen. :)
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Da benutzt du wohl Bottle falsch, nicht als CGI...

Hast du http://www.python-forum.de/post-166381.html#166381 beachtet?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

Da hat er wieder mal nicht aufgepasst. ^^

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-

print "Content-Type: text/html;charset=utf-8\n"

from bottle import route, run

@route('/')
def index():
    return "Hello World!"

run(server=bottle.CGIServer, host='python.barfooz.de', port=80)
So sieht mein Script jetzt aus und der Aufruf bleibt leer. Ich komm mir langsam schon doof vor weil ich mir alles vorkauen lasse. :/
Antworten