Flask auf deinem Uberspace
Ich hatte letzt mal wieder eine Anfrage wie genau ich Flask (und damit auch werkzeug, da Flask ja darauf basiert) auf meinem Uberspace zum laufen bekommen habe.
Letzendlich geht es darum, wie man Apache mit fcgi und python (bzw. im Speziellen werkzeug) zum Laufen bringt. Dazu habe ich im wesentlichen zwei Scripts.
Ich habe auf meinem Uberspace dafür eine .htaccess
und eine uberspace.fcgi
angelegt. In der .htaccess
steht folgendes:
1
2
3
4
5
6
7
8
9
10
AddHandler fcgid-script .fcgi
Options +ExecCGI
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !uberspace.fcgi
RewriteRule (.*) uberspace.fcgi/$1 [QSA,L]
Die letzen Endes nichts anderes macht, als einfach alle Anfragen auf die uberspace.fcgi
umschreibt. Diese wiederum enthält folgendes:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/env python2.7
import sys, os
sys.path.insert(0, '<der ordner in dem euer flask liegt>')
from flup.server.fcgi import WSGIServer
from www import www
class ApacheUberspaceRewriteFix(object):
def __init__(self, app):
self.app = app
def __call__(self, environ, start_response):
environ['SCRIPT_NAME'] = ''
return self.app(environ, start_response)
if __name__ == '__main__':
WSGIServer(ApacheUberspaceRewriteFix(www)).run()
In dieser Datei steckt jetzt die wahre Magie. Am wichtigsten ist, dass ihr den Pfad oben bearbeitet. Desweiteren sorgt das Skript einfach dafür, dass alle Links passen und ihr keine Probleme mit eurem Rewrite usw. bekommt. Mein Flask wollte nämlich nicht so recht mit dem Apache kooperieren. ;)
Wie immer bin ich den beteiligten Helfern wie z.B. dem uberspace-Support und den Flask-Entwicklern zu tiefstem Dank verpflichtet! :)