2010-09-12 9 views
33

J'ai un problème en déployant une application flask sur apache2 en utilisant wsgi. J'ai posté les journaux d'erreurs et les fichiers de configuration ci-dessous. J'ai essayé de déplacer des choses, les renommer, etc, mais tous me donnent une erreur de serveur interne. Je ne sais pas pourquoi je reçois l'erreur d'importation. Toute contribution/suggestion est appréciée, merci!Comment résoudre les erreurs d'importation en essayant de déployer Flask en utilisant WSGI sur Apache2

Voici mon apache error.log

[Sun Sep 12 20:47:59 2010] [error] [client] mod_wsgi (pid=9753): Target WSGI script '/sites/flaskfirst/wsgi.py' cannot be loaded as Python module. 
[Sun Sep 12 20:47:59 2010] [error] [client] mod_wsgi (pid=9753): Exception occurred processing WSGI script '/sites/flaskfirst/wsgi.py'. 
[Sun Sep 12 20:47:59 2010] [error] [client] Traceback (most recent call last): 
[Sun Sep 12 20:47:59 2010] [error] [client] File "/sites/flaskfirst/wsgi.py", line 1, in <module> 
[Sun Sep 12 20:47:59 2010] [error] [client]  from app import app as application 
[Sun Sep 12 20:47:59 2010] [error] [client] ImportError: No module named app 

wsgi.py

# This is wsgi.py 
from app import app as application 

app.py

# This is app.py 
from flask import Flask, render_template 
import settings 

app = Flask(__name__) 
app.debug = settings.DEBUG 

from views.homepage import * 
from views.events import * 
from views.submit import * 
from views.feed import * 

if __name__ == "__main__": 
    app.run() 

Voici les bases de l'arborescence, pour vous donner une idée.

/flaskfirst/ 
    /static/ 
    /templates/ 
    /views/ 
    __init__.py 
    app.py 
    wsgi.py 

Voici le fichier apache VirtualHost

<VirtualHost *:80> 
     ServerAdmin [email protected] 
     ServerName crath.org 
     DocumentRoot /sites/flaskfirst 

     # WSGI Settings 
     WSGIScriptAlias//sites/flaskfirst/wsgi.py 
     WSGIDaemonProcess flaskfirst user=sreustle group=general processes=1 threads=10 
     WSGIProcessGroup flaskfirst 

     # Static Directories 
     Alias /static /sites/flaskfirst/static/ 
     <Location "/static"> 
       SetHandler None 
     </Location> 

</VirtualHost> 

Répondre

30

Merci à zarf et damjan sur irc.freenode.org à #pocoo, ils ont pu me aider à obtenir que ce soit réglé. Le problème était le PythonPath n'était pas correct. Nous avons fixé cela en utilisant la wsgi.py suivante

import sys 
sys.path.insert(0, "/sites/flaskfirst") 

from app import app 
application = app 
+4

était d'avoir la même question. Je l'ai ajouté à 'WSGIDaemonProcess appName python-path =/home/...' dans mon fichier de configuration httpd. Je ne sais pas si c'est le bon endroit ou pas, mais FWIW est une option. En savoir plus sur WSGIDaemonProcess: [link] (http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIDaemonProcess) – chris

+0

Cela fonctionne très bien merci beaucoup! –

+0

Merci! Tu as sauvé ma journée !! – Roomm

5

je votre solution pour le faire fonctionner, mais il a continué de dupliquer le chemin dans sys.path (vous pouvez l'écrire pour voir si cela vous arrive) si J'ai fait une petite modification:

import sys 
flaskfirst = "/sites/flaskfirst" 
if not flaskfirst in sys.path: 
    sys.path.insert(0, flaskfirst) 

from app import app 
application = app 

de cette façon, il est seulement inclus une fois