Flask deployment auf apache

Django, Flask, Bottle, WSGI, CGI…
Antworten
5in4
User
Beiträge: 6
Registriert: Montag 20. Dezember 2010, 13:09

Hallo,

ich arbeite mich gerade in Flask ein, scheitere jedoch an der Einbindung in apache. Nach längerer Suche und Studium der Dokumentation wende ich mich also mal an euch :)

Der apache läuft auf debian squeeze mit php, ohne weitere besondere Konfiguration. Document-root ist /var/www

Die python-Anwendung liegt in /var/www/evl/evl.py:

Code: Alles auswählen

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

from flask import Flask, request, g, redirect, url_for, abort, render_template

SECRET_KEY = 'f53ht39hj5f395h'
DEBUG = False

app = Flask(__name__)
app.config.from_object(__name__)

@app.route('/')
def show_login():
    return render_template('login.htm')
app.run(debug=DEBUG)
/var/www/evl/evl.wsgi:

Code: Alles auswählen

import sys
sys.path.insert(0, "/var/www/evl")

from evl import app as application
wsgi sollte korrekt installiert sein (aus /var/log/apache2/error.log):

Code: Alles auswählen

[Fri Feb 18 09:49:57 2011] [notice] Apache/2.2.16 (Debian) DAV/2 PHP/5.3.3-7 with Suhosin-Patch mod_wsgi/3.3 Python/2.6.6 configured -- resuming normal operations
Woran ich explizit scheitere ist die apache-Konfiguration, die in der Dokumentation vorgegeben wird (angepasst):

Code: Alles auswählen

<VirtualHost *>
    #ServerName example.com

    WSGIDaemonProcess evl user=www-data group=www-data threads=5
    WSGIScriptAlias / /var/www/evl/evl.wsgi

    <Directory /var/www/evl>
        WSGIProcessGroup evl
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
    </Directory>
</VirtualHost>
Bloß wo muss ich genau diese Konfiguration ablegen? In /etc/apache2/httpd.conf (ansonsten leer) ist das Resultat, dass alle Seiten unendlich lange laden (keine besondere Ausgabe in error.log), ansonsten weiß ich nicht so recht weiter, die genaue Konfigurationsdatei konnte ich nirgends in Dokumentationen finden.

Vielen Dank und schöne Grüße
frabron
User
Beiträge: 306
Registriert: Dienstag 31. März 2009, 14:36

Unter Debian gibt es normalerweise in /etc/apache2/sites-available/ eine Datei 'default', wo die Konfiguration drin steht.

Code: Alles auswählen

app.run(debug=DEBUG)
musst du aber noch herausnehmen.
5in4
User
Beiträge: 6
Registriert: Montag 20. Dezember 2010, 13:09

Ah, danke schön, das klappt schon mal!

Leider werter der server jetzt aber nur noch die Routen aus, die in der app festegelegt wurden, auf die php-Seiten in anderen Ordnern kann ich nicht mehr zugreifen. Kann man das auch noch umgehen?

Schöne Grüße

//EDIT: vergessen den Inhalt der /etc/apache2/sites-available/default anzuhängen:
http://paste.pocoo.org/show/340869/
frabron
User
Beiträge: 306
Registriert: Dienstag 31. März 2009, 14:36

Naja, wenn du deine WSGI-App auch nach '/' mountest, ist das doch kein Wunder ;) Du kannst deine PHP Skripte noch weiterhin ausführen, wenn du sie in der Apache-Konfiguration unter einem Alias verfügbar machst, so ähnlich wie dein cgi-bin z.B.
5in4
User
Beiträge: 6
Registriert: Montag 20. Dezember 2010, 13:09

Ah, ok.
Leider finde ich nichts, was das genau erklärt, Probieren hat leider nichts geholfen.

In welcher Form müsste man das denn angeben, wenn wsgi nur in dem Ordner evl/ ausgeführt werden sollte?

Schöne Grüße
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Also darauf hättest du auch selbst kommen können:

Code: Alles auswählen

WSGIScriptAlias /evl/ /var/www/evl/evl.wsgi
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten