2010-09-12 8 views
33

Mam problem z wdrażaniem aplikacji kolby na apache2 przy użyciu wsgi. Poniżej zamieściłem dzienniki błędów i pliki konfiguracyjne. Próbowałem przesuwać różne rzeczy, zmieniać ich nazwy, itp., Ale wszystkie dały mi wewnętrzny błąd serwera. Nie wiem, dlaczego pojawia się błąd importowania. Wszelkie dane wejściowe/sugestie są doceniane, dzięki!Jak rozwiązać błędy importowania podczas próby wdrożenia kolby przy użyciu WSGI na Apache2

Oto moje 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() 

Oto podstawy drzewa katalogów, aby dać pomysł.

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

Oto apache virtualhost złożyć

<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> 

Odpowiedz

30

Dzięki zarf i damjan na irc.freenode.org na #pocoo, byli w stanie pomóc mi dostać się to naprawić. Problem polegał na tym, że PythonPath nie był poprawny. Naprawiliśmy to za pomocą poniższego wsgi.py

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

from app import app 
application = app 
+4

Was ma ten sam problem. Dodałem go do 'WSGIDaemonProcess appName python-path =/home/...' w moim pliku konfiguracyjnym httpd. Nie jestem pewien, czy to jest właściwe miejsce, czy nie, ale FWIW jest opcją. Więcej informacji na temat WSGIDaemonProcess: [link] (http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIDaemonProcess) – chris

+0

Wspaniale działa, dziękuję! –

+0

Dzięki! Uratowałeś mój dzień! – Roomm

5

użyłem swoje rozwiązanie, aby to działa, ale to zachowało powielenie ścieżkę w sys.path (można napisać to, aby zobaczyć, czy to dzieje się z wami), tak zrobiłem małą modyfikację:

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

from app import app 
application = app 

ten sposób to tylko zawarte raz

Powiązane problemy