2017-04-22 2 views
0

J'essaye de déployer une application FLASK dans Ubuntu VPS en utilisant wsgi mais je reçois une erreur de serveur interne. Vérification de la apache.log me donne l'erreur suivante:Impossible de résoudre le chemin dans l'application Flask s'exécutant sur WSGI/Apache

No such file or directory: 'files/filesystem/filesystem.pickle'.

Mon arborescence ressemble à ceci sous /var/www/:

dmft_seacrh_engine 
    files 
     filesystem 
      filesystem.pickle 
    dmft_search.wsgi 
    dmft_search 
     controllers 
      search.py 

Je suis en train d'ouvrir la filesystem.pickle à l'intérieur search.py comme suit:

with open('/files/filesystem/filesystem.pickle', 'rb') as handle: 
    filesystem = pickle.load(handle) 

Le contenu du fichier dmft.wsgi est:

activate_this = '/opt/dmft/bin/activate_this.py' 
execfile(activate_this, dict(__file__=activate_this)) 
import sys 
import logging 
logging.basicConfig(stream=sys.stderr) 
sys.path.insert(0,"/var/www/dmft_search_engine") 

from dmft_search import app as application 

Voici comment mon fichier de configuration ressemble:

<VirtualHost *:80> 
       ServerName  dmft_search_engine.com 
       WSGIScriptAlias//var/www/dmft_search_engine/dmft_search.wsgi 
       <Directory /var/www/dmft_search_engine/dmft_search/> 
         Order allow,deny 
         Allow from all 
       </Directory> 
       Alias /static /var/www/dmft_search_engine/dmft_search/static 
       <Directory /var/www/dmft_search_engine/dmft_search/static/> 
         Order allow,deny 
         Allow from all 
       </Directory> 
       Alias /files /var/www/dmft_search_engine/files/$ 
       <Directory /var/www/dmft_search_engine/files/>$ 
         Order allow,deny 
         Allow from all 
       </Directory> 

       ErrorLog ${APACHE_LOG_DIR}/error.log 
       LogLevel warn 
       CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost> 

me aider gentiment. J'ai également ajouté un alias pour /files dans le fichier .conf. Comment puis-je résoudre ce problème?

Répondre

0

Le problème est que la course d'application dans le contexte du répertoire racine de sorte que le chemin correct doit être:

with open('var/www/html/dmft_search_engine/files/filesystem/filesystem.pickle', 'rb') as handle: 
     filesystem = pickle.load(handle)