LightTPD - FastCGI - CherryPy 3.0.1 Mount = 404 Fehlerseite

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
fme
User
Beiträge: 34
Registriert: Sonntag 1. April 2007, 18:58
Wohnort: Bremen

Hallo,

ich habe ein Problem mit CherryPY.
Wie schaffe ich es, dass ich ohne den
eigenen Webserver von CherryPY Seiten
zum laufen bekomme ?

Ich habe folgendes Script als test.fcgi:

Code: Alles auswählen

#!/usr/bin/env python
"""
Tutorial - Passing variables

This tutorial shows you how to pass GET/POST variables to methods.
"""

import cherrypy


class WelcomePage:

    def index(self):
        return '''
            <form action="greetUser" method="GET">
            What is your name?
            <input type="text" name="name" />
            <input type="submit" />
            </form>'''
    index.exposed = True

    def greetUser(self, name = None):

        if name:
            return "Hey %s, what's up?" % name
        else:
            if name is None:
                return 'Please enter your name <a href="./">here</a>.'
            else:
                return 'No, really, enter your name <a href="./">here</a>.'
    greetUser.exposed = True


app = cherrypy.tree.mount(WelcomePage(), '/')

if __name__ == '__main__':
    cherrypy.engine.start(blocking=False)
    from flup.server.fcgi import WSGIServer
    WSGIServer(app, bindAddress = '/tmp/fcgi.sock').run()
Das starte ich dann mit

Code: Alles auswählen

python test.fcgi
Rufe ich jetzt die Seite mit dem Browser auf, dann
bekomme ich immer nur eine 404 Fehlerseite von
CherryPy.

Code: Alles auswählen

404 Not Found

The path '/test.fcgi' was not found.

Traceback (most recent call last):
  File "/usr/lib/python2.5/site-packages/CherryPy-3.0.1-py2.5.egg/cherrypy/_cprequest.py", line 551, in respond
    cherrypy.response.body = self.handler()
  File "/usr/lib/python2.5/site-packages/CherryPy-3.0.1-py2.5.egg/cherrypy/_cperror.py", line 198, in __call__
    raise self
NotFound: (404, "The path '/test.fcgi' was not found.")

Powered by CherryPy 3.0.1 
Was mache ich falsch ?
Kann mir vielleicht jemand zeigen wie ich das richtig mache ?

Schön mal vielen Dank im voraus.
fme
User
Beiträge: 34
Registriert: Sonntag 1. April 2007, 18:58
Wohnort: Bremen

Hat denn keiner ein Beispiel für mich ?

Das kann doch nicht so schwer sein, wenn
man nicht den eigenen Server von CherryPY
nutzen will.

Ich brauch nur erstmal einen Wink in
die richtige Richtung.

Bin für jeden Tipp dankbar.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Erstmal musst du das FastCGI-Skript in Lighty einbinden, dann in der fcgi-Datei einen WSGI-Server laufen lassen. In der Regel sollte es so sein, dass Lighty dein Skript selbst aufruft.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
fme
User
Beiträge: 34
Registriert: Sonntag 1. April 2007, 18:58
Wohnort: Bremen

Hallo und erstmal vielen Dank.

Aber leider läuft es immer noch nicht.
Ich habe das Script mal auf das nötigste
reduziert:

Code: Alles auswählen

#!/usr/bin/env python

import cherrypy

class HelloWorld(object):
    def index(self):
        return "Hello World!"
    index.exposed = True

app = cherrypy.tree.mount(HelloWorld(), '/')

if __name__ == '__main__':
    cherrypy.engine.start(blocking=False)
    from flup.server.fcgi import WSGIServer
    WSGIServer(app, bindAddress = '/tmp/fcgi.sock').run()
Meine ganzen Konfigurations- und Logdateien habe ich mal hier hochgeladen => http://fme.uttx.net/py/

Rufe ich die Seite (http://localhost/cherry_test.fcgi/index) jetzt auf,
lädt sich der Browser tot ...
Sonst passiert nichts.


Oh man, warum muss das so kompliziert sein ?
Sieht jemand meinen Fehler ?
Oder bin ich nun total auf dem falschen Weg ?

Wenn ich das irgendwann mal geschafft habe werde ich
mal ein Tutorial schreiben. Im Netz findet man ja kaum was
dazu.
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

fme hat geschrieben:Oh man, warum muss das so kompliziert sein ?
Sieht jemand meinen Fehler ?
Oder bin ich nun total auf dem falschen Weg ?
Ich fürchte hier verwendet keiner CherryPy. Du müsstest in den Docs nachsehen wie du an das WSGI callable kommst.
TUFKAB – the user formerly known as blackbird
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ich habe ein wenig Doku dazu gefunden: Insbesondere letzte Seite scheint recht aktuell zu sein und auch für das aktuelle CherryPy zu gelten, aber auch die zweite Seite beschreibt das Setup recht simpel.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
fme
User
Beiträge: 34
Registriert: Sonntag 1. April 2007, 18:58
Wohnort: Bremen

Erstmal vielen Dank an euch beiden für eure Bemühungen.
Aber die Seiten, die du verlinkt hast, habe ich bestimmt schon
100 mal gelesen. Komme aber trotzdem nicht weiter.

Nehme ich jetzt z.B. genau den Code aus deinem 2. Link, so
bekomme ich einen 500er Error.

Log sagt dazu:

Code: Alles auswählen

2007-04-07 10:38:34: (mod_fastcgi.c.3528) handling it in mod_fastcgi
2007-04-07 10:38:34: (mod_fastcgi.c.2879) got proc: pid: 8598 socket: unix:/tmp/fcgi.sock-3 load: 1
2007-04-07 10:38:34: (mod_fastcgi.c.2409) unexpected end-of-file (perhaps the fastcgi process died): pid: 8598 socket: unix:/tmp/fcgi.sock-3
2007-04-07 10:38:34: (mod_fastcgi.c.3194) response not received, request sent: 877 on socket: unix:/tmp/fcgi.sock-3 for /cherry_test.fcgi , closing connection
2007-04-07 10:38:34: (mod_fastcgi.c.1490) released proc: pid: 8598 socket: unix:/tmp/fcgi.sock-3 load: 0
2007-04-07 10:38:34: (response.c.111) Response-Header:
HTTP/1.1 500 Internal Server Error
Content-Type: text/html
Content-Length: 369
Date: Sat, 07 Apr 2007 08:38:34 GMT
Server: lighttpd/1.4.13


Ändere ich im Beispielcode

Code: Alles auswählen

WSGIServer(app).run()
in

Code: Alles auswählen

WSGIServer(app, bindAddress = '/tmp/fcgi.sock').run()
lädt er sich wieder tot.
Warum ?!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Wie sieht die Webserver-Konfig aus?

(und falls wir nicht weiterkommen, kannst du mich zur Not auch per Jabber anschreiben)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
fme
User
Beiträge: 34
Registriert: Sonntag 1. April 2007, 18:58
Wohnort: Bremen

Meine Dateien kannst du per http://fme.uttx.net/py/ einsehen.

Auf dein Angebot per Jabber komme ich gerne nach Ostern zurück.
Vielen Dank.
Antworten