Seite 1 von 1

Flask deployment auf apache

Verfasst: Freitag 18. Februar 2011, 09:58
von 5in4
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

Re: Flask deployment auf apache

Verfasst: Freitag 18. Februar 2011, 10:25
von frabron
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.

Re: Flask deployment auf apache

Verfasst: Freitag 18. Februar 2011, 12:11
von 5in4
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/

Re: Flask deployment auf apache

Verfasst: Dienstag 22. Februar 2011, 11:01
von frabron
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.

Re: Flask deployment auf apache

Verfasst: Dienstag 22. Februar 2011, 13:00
von 5in4
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

Re: Flask deployment auf apache

Verfasst: Dienstag 22. Februar 2011, 23:05
von Leonidas
Also darauf hättest du auch selbst kommen können:

Code: Alles auswählen

WSGIScriptAlias /evl/ /var/www/evl/evl.wsgi