2016-07-26 24 views
0

HINWEIS: Diese Frage unterscheidet sich von "Add a prefix to all Flask routes", da ich versuche, dies auf Apache-Ebene zu lösen. Zusätzlich hat die vorgeschlagene Lösung für die Flaschenrouten nicht funktioniert!Problem beim Einrichten von wsgi als Alias-Pfad in Apache

Nach this post, versuche ich Apache PHP-Dateien standardmäßig zu dienen, aber zeigen Sie einen bestimmten Alias ​​(d. H. /flaskapp) auf einen WSGI-Pfad. Die wsgi-Datei leitet Anfragen wiederum an eine Python-flask-App weiter.

Hier ist die Apache-Konfiguration, die ich versuche, (unter 000-default.conf):

<VirtualHost *:80> 
     ServerName localhost 
     ServerAdmin [email protected] 

     Alias//var/www/html/ 
     <Directory "/var/www/html"> 
      Order Deny,Allow 
      Allow from all 
      Require all granted 
     </Directory> 

     WSGIScriptAlias /flaskapp "/var/www/flaskapp/deploy.wsgi" 
     <Directory /var/www/flaskapp> 
       Options +ExecCGI 
       Order allow,deny 
       Allow from all 
     </Directory> 
</VirtualHost> 

Nach einem service apache2 restart tun finde ich, dass Anfragen an http://myip/flaskapp Ergebnis in einem 404-Fehlern. Alles andere funktioniert gut.

Dinge, die ich habe bisher versucht:

  • Doppel alle Datei- und Ordnerpfaden Überprüfung (keine Probleme gefunden)
  • Mit dem wsgi Teil des obigen Code die wsgi App als ein einzurichten Standalone-Virtualhost (funktioniert)
  • app.config['APPLICATION_ROOT'] = '/flaskapp' meiner app.py Datei hinzufügen, wie die Frage vorgeschlagen ‚Add a prefix to all Flask routes‘ (Hat keine Auswirkungen)

Wo könnte ich sein falsch machen?

+1

Verwenden Sie nicht Alias ​​/. Das überschreibt mod_wsgi vollständig. Verwenden Sie die DocumentRoot-Direktive, um anzugeben, wo sich primäre Site-Dateien befinden. Auf diese Weise kann mod_wsgi eine Unter-URL überschreiben. –

+0

Und ja, Sie sind richtig, nicht die gleiche Frage wie behauptet, duplizieren. Die Leute hier auf SO verstehen normalerweise keine Feinheiten und machen nur Vermutungen. –

+0

Dank @GrahamDumpleton - das Hinzufügen von DocumentRoot hat das Problem behoben. Fühlen Sie sich frei, dies als Antwort aufzuschreiben, oder ich kann es heute Abend tun ... – user2761030

Antwort

1

Statt:

Alias//var/www/html/ 
    <Directory "/var/www/html"> 
     Order Deny,Allow 
     Allow from all 
     Require all granted 
    </Directory> 

Verwendung:

DocumentRoot /var/www/html/ 
    <Directory "/var/www/html"> 
     Order Deny,Allow 
     Allow from all 
     Require all granted 
    </Directory> 

Mit '/' mit Alias hat Vorrang vor allem anderen mod_wsgi Fähigkeit einschließlich der Anträge auf einen Unter URL abzufangen. Also für Sachen im Stamm der Website müssen Sie DocumentRoot Direktive verwenden.