Seite 1 von 2
Re: cgi/fastcgi auf uberspace
Verfasst: Sonntag 30. Juni 2013, 12:03
von apollo13
FWIW ich würde soweit weg von FCGI gehen wie möglich, ich werde das ganze wohl beginnend mit Django 1.7 deprecaten und dann spätestens in 1.9 entfernen.
Re: cgi/fastcgi auf uberspace
Verfasst: Sonntag 30. Juni 2013, 12:33
von BlackJack
@apollo13: Warum? Das ist das einzige was Uberspace anbietet und die Gründe sind IMHO einleuchtend. Man kann nur eine Python-Version gleichzeitig unterstützen und mit FastCGI hat man im Grunde den gleichen Effekt nur sprachunabhängig.
Re: cgi/fastcgi auf uberspace
Verfasst: Sonntag 30. Juni 2013, 12:38
von apollo13
Das letzte Flup Release ist aus 2011, Python-Standard für Webapps ist WSGI; wenn jemand unbedingt FCGI will, kann er sich selbst einen Wrapper rundherum schreiben, es gibt keinen Grund warum das in Django sein sollte.
EDIT:// Abgesehen davon ist die Kombo suexec+fcgi ein horror; damit das ordentlich geht darf man dann erstmal suexec source code hacken gehen…
Re: cgi/fastcgi auf uberspace
Verfasst: Sonntag 30. Juni 2013, 12:44
von BlackJack
@apollo13: Hat sich denn an den Standards FastCGI und WSGI zwischen denen Flup eine Brücke schlägt seit 2011 etwas verändert? Solange die sich nicht verändern braucht man doch auch kein neues Flup-Release, oder‽
Re: cgi/fastcgi auf uberspace
Verfasst: Sonntag 30. Juni 2013, 12:50
von apollo13
Ich würde dir zustimmen, wenn es eine Homepage geben würde wo man Fehler melden könnte etc… So schaut das Projekt ziemlich tot aus; und wie bereits gesagt ich sehe keinen Grund warum Django fastcgi nativ supporten sollte -- WSGI muss reichen.
EDIT:// Flask hat zb auch keinen expliziten fcgi support, eg siehe:
http://flask.pocoo.org/docs/deploying/fastcgi/ -- Anbindung an fcgi wie es zum Beispiel Django mit runfcgi macht ist wirklich nicht Aufgabe des Frameworks, das ist etwas was jemand wenn er will als 3rd party app entwickeln kann und das man dann sowohl für Flask als auch Django (etc…) verwenden kann.
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/