mod_wsgi für Flask und Subdomains konfigurieren

Django, Flask, Bottle, WSGI, CGI…
Antworten
audacity363
User
Beiträge: 83
Registriert: Dienstag 6. August 2013, 18:59

Guten Tag zusammen,
Ich überlege zurzeit eine in PHP/HTML/JS geschriebene Website durch Flask abzulösen. Soweit ist sie auch fertig, nur möchte ich sie erst einmal zu Testzwecken auf einer Subdomain laufen lassen.

Erstmal zum aktuellen System:
Ubuntu Server 12.04
Apache 2
mod_wsgi
python 2.7
Zum verwalten von Apache und Co benutze ich Plesk. Dort habe ich auch die Subdomain erstellt.

Zum Testen habe ich eine ganz einfache Flask app erstellt:

Code: Alles auswählen

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'
Dies liegt bei mir unter "/var/www/vhosts/domain.de/test.domain.de/test.py"
Dann habe das .wsgi File ebenfalls unter diesem Pfad erstellt, nur mit dem Namen "test.wsgi" und dem Inhalt:

Code: Alles auswählen

from test import app as application
Zum Schluss, habe ich das Apache Konfiguration unter /etc/apache2/apache2.conf um folgende Zeilen erweitert:

Code: Alles auswählen

<VirtualHost *:80>
    ServerName test.domain.de

    WSGIDaemonProcess test user=user group=gruppe threads=5
    WSGIScriptAlias / /var/www/vhosts/domain.de/test.domain.de/test.wsgi

    <Directory /var/www/vhosts/domain.de/test.domain.de>
        WSGIProcessGroup test
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/flask.err
</VirtualHost>
Wenn ich nun Apache neustarte meckert er mir auch nichts an, nur wenn ich nun versuche diese Subdomain aufzurufen, bekomme ich nur ein "403 - Forbidden". Ein normales HTML Dokument mit einem "Hello World" kann ich ohne Probleme aufrufen.
Im Apache Error log bekomme ich auch nur folgende Meldungen zum Thema Python:
[Mon Jun 08 16:55:45 2015] [error] python_init: Python version mismatch, expected '2.7.2+', found '2.7.3'.
[Mon Jun 08 16:55:45 2015] [error] python_init: Python executable found '/usr/bin/python'.
[Mon Jun 08 16:55:45 2015] [error] python_init: Python path being used '/usr/lib/python2.7/:/usr/lib/python2.7/plat-linux2:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/lib-old:/usr/lib/python2.7/lib-dynload'.
[Mon Jun 08 16:55:45 2015] [notice] mod_python: Creating 8 session mutexes based on 150 max processes and 0 max threads.
[Mon Jun 08 16:55:45 2015] [notice] mod_python: using mutex_directory /tmp
[Mon Jun 08 16:55:45 2015] [notice] Apache/2.2.22 (Ubuntu) DAV/2 SVN/1.6.17 mod_fcgid/2.3.9 mod_python/3.3.1 Python/2.7.3 mod_ssl/2.2.22 OpenSSL/1.0.1 mod_wsgi/3.3 configured -- resuming normal operations
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Mod_python und mod_wsgi aktivieren ist ne ganz schlechte Idee. Hau mod_python raus und infos zu 403 findest du wahrscheinlich im access log, siehe auch: https://wiki.apache.org/httpd/ClientDen ... figuration
audacity363
User
Beiträge: 83
Registriert: Dienstag 6. August 2013, 18:59

mod_python zu deaktivieren hat nun zumindest Error Logs zu folge:
Directory index forbidden by Options directive: /var/www/vhosts/domain.de/test.domain.d/
Die Fehlermeldung ist ja klar. Irgendein <Directory> tag verweigert noch den Zugriff.
Dein Link hat dazu leider nicht geholfen. Google spukt auch immer nur den Verweis auf ein ".htaccess" File aus, welches aber in dieser Subdomain nicht existiert.

Habe nun auch herausgefunden, dass die Apache Konfiguration von Plesk jeweils einzelne Konfigurationsfiles in "/var/www/vhosts/system/test.domain.de/conf/vhost.conf" erwartet.
Also habe ich nun alles von mir eingefügte wieder aus der "apache2.conf" herausgenommen und in die oben genannte vhost.conf geschrieben.
Ebenfalls habe ich "Order deny,allow" in "Order allow,deny" umgeändert.
Hier noch einmal das ganze File:

Code: Alles auswählen

<VirtualHost *:80>
    ServerName bti.engemann.me

    WSGIDaemonProcess test user=user group=gruppe threads=5
    WSGIScriptAlias / /var/www/vhosts/domain.de/test.domain.de/test.wsgi

    <Directory /var/www/vhosts/domain.de/test.domain.de/>
        WSGIProcessGroup test
        WSGIApplicationGroup %{GLOBAL}
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Sorry, aber Plesk ist so ziemlich das letzte. Bei nem normalen Server kann dir vlt geholfen werden, aber mit Plesk musst selber schaun wie du weiter kommst.
audacity363
User
Beiträge: 83
Registriert: Dienstag 6. August 2013, 18:59

Der Server ist leider nicht von mir. Mache das nur für einen bekannten, der diese Website "pflegt" und habe ehrlich gesagt keine Lust ihm Postfix, Apache und noch so ein paar andere Kleinigkeiten einzurichten. Vor allem hab ich kein Plan wie Plesk den Postfix konfiguriert hat, um Mail zu backupen usw. usw. Aber das ist ein anderes Thema.

Na ja ok schade. Danke für den Versuch.
Antworten