Seite 2 von 2
Re: cgi/fastcgi auf uberspace
Verfasst: Sonntag 30. Juni 2013, 13:12
von BlackJack
@apollo13: Was meinst Du mit nativ unterstützen? Natürlich muss man keinen FCGI-Server schreiben, aber eine einfache Möglichkeit Flup einzubinden, sollte doch drin sein. Der entsprechende Mehraufwand bei `bottle` besteht aus diesen paar Zeilen:
Code: Alles auswählen
class FlupFCGIServer(ServerAdapter):
def run(self, handler): # pragma: no cover
import flup.server.fcgi
self.options.setdefault('bindAddress', (self.host, self.port))
flup.server.fcgi.WSGIServer(handler, **self.options).run()
Und viel mehr steht in der Flask-Dokumentation zu dem Thema ja auch nicht.
Re: cgi/fastcgi auf uberspace
Verfasst: Sonntag 30. Juni 2013, 14:01
von apollo13
Django macht ein bisserl mehr, siehe auch das runfcgi management command. Die einfache Möglichkeit die du ansprichst ist ja bereits dadurch gegeben, dass Django eine WSGI-app zur Verfügung stellt (seit 1.4 oder so).
Re: cgi/fastcgi auf uberspace
Verfasst: Donnerstag 18. Juli 2013, 12:26
von jens
Hab gerade erst meine Seiten auf Uberspace migriert. Muß sagen, das einrichten ist echt schnell erledigt, dort.
Warum es kein mod_wsgi gibt, steht hier:
https://uberspace.de/dokuwiki/brainstorming#mod_wsgi
Wenn irgendwann fast_CGI nicht mehr Unterstützt wird, muß ich mal weiter sehen. Aber momentan hängt PyLucid eh noch bei Django 1.4.x fest

Re: cgi/fastcgi auf uberspace
Verfasst: Donnerstag 18. Juli 2013, 13:24
von jens
Und das erste Problem
Auf console ausgeführt ergibt dieses:
Code: Alles auswählen
print "sys.getfilesystemencoding():", sys.getfilesystemencoding()
print "sys.getdefaultencoding():", sys.getdefaultencoding()
das hier:
Code: Alles auswählen
sys.getfilesystemencoding(): UTF-8
sys.getdefaultencoding(): ascii
Über Apache ausgegeben (Also Python per fast_CGI) ergibt das:
Code: Alles auswählen
sys.getfilesystemencoding(): ANSI_X3.4-1968
sys.getdefaultencoding(): ascii
Das hat zur folge, das Umlaute/Sonderzeichen bei os.path Sachen Probleme machen. Das ganze ist auch hier beschrieben:
https://docs.djangoproject.com/en/dev/h ... ncodeerror
Ich hab es mal mit
in der .htaccess Datei probiert. Bringt aber nix.
Das folgende in der index.fcgi:
ändert nur das defaultencoding, nicht aber das filesystemencoding:
Code: Alles auswählen
sys.getfilesystemencoding(): ANSI_X3.4-1968
sys.getdefaultencoding(): UTF-8
Ein sys.setfilesystemencoding() gibt es leider nicht.
Ideen?
(Den Support hab ich mal angeschrieben)
EDIT: Work-a-round hier:
http://www.python-forum.de/viewtopic.ph ... 44#p243044 
Re: cgi/fastcgi auf uberspace
Verfasst: Donnerstag 18. Juli 2013, 14:04
von BlackJack
@jens: Idee habe ich keine (ausser „monkey patching” zu versuchen), aber gib mal weiter was der Support dazu sagt.

Re: cgi/fastcgi auf uberspace
Verfasst: Freitag 19. Juli 2013, 13:02
von jens
Leider habe ich noch keine Rückmeldung vom Support. Wobei der eigentlich immer recht schnell ist...
Zwischenzeitlich habe ich es mal mit dem folgenden in der index.fcgi probiert:
Code: Alles auswählen
...
reload(sys)
sys.setdefaultencoding("UTF-8")
def getfilesystemencoding():
return "UTF-8"
sys.getfilesystemencoding=getfilesystemencoding
...
Das ändert zwar den Rückgabewert von
sys.getdefaultencoding() und
sys.getfilesystemencoding() auf
UTF-8 Aber das Problem ist nur verlagert:
Es taucht nun kein UnicodeDecodeError bei os.path.join() auf, dafür aber später bei os.path.isdir() bzw. os.stat()

Re: cgi/fastcgi auf uberspace
Verfasst: Freitag 19. Juli 2013, 13:46
von jens
jens hat geschrieben:Leider habe ich noch keine Rückmeldung vom Support. Wobei der eigentlich immer recht schnell ist...
So, Rückmeldung erhalten: Sie wissen auch erstmal keine Lösung

Re: cgi/fastcgi auf uberspace
Verfasst: Freitag 19. Juli 2013, 14:07
von jens
Der Support hatte eine Idee für einen work-a-round Hack... Per Wrapper Skript setzt man die Variablen.
Bsp:
index.fcgi.sh
Code: Alles auswählen
#!/bin/sh
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
exec ./index.fcgi
.htaccess
Das funktioniert so erstmal...
EDIT: Neuer Anlauf Django und fastCGI mit Python 3 auf Uberspace ->
http://www.python-forum.de/viewtopic.php?f=7&t=34156 bzw.
https://www.jensdiemer.de/de/Blog/2014/ ... tallieren/