2010-07-18 7 views
11

Jeder weiß, wie man eine einfache Flask-Anwendung in der Webfaction einsetzt? Ich kenne die Unterstützung von webfaction mod_wsgi und lese den Leitfaden auf der Flask-Website, aber ich kann meine App nicht funktionieren lassen. Hat jemand eine funktionierende Konfiguration?Wie Flask-Anwendung auf Webfaction bereitstellen?

UPDATE, um einen Kommentar von Graham Dumpleton zu beantworten.

Ich bekomme einen 500 internen Serverfehler. Apache zeigt keinen Fehler in den Protokollen. Das WSGI-Skript wird ausgeführt und scheint die Anwendung korrekt zu erstellen, aber ich erhalte immer einen 500-Fehler.

Danke.

+1

Was die eigentliche Fehler ist, dass Sie sind immer? –

+0

Versuchen Sie Debug in Flask einzuschalten. Ich vergesse, wie man das macht, also könntest du auf #pocco irc channel fragen. Wenn Sie den mod_wsgi-Daemon-Modus mit einem einzigen Prozess verwenden, können Sie auch den Flask-Debugger einschalten. –

+0

hast du das jemals funktioniert? Hat JoshFinnies Antwort für dich funktioniert? –

Antwort

16

Ich habe es mit dem folgenden Verfahren arbeiten:

  • erstellen und App 'myapp' vom Typ namens mod_wsgi 3.3/Python 2.7. Webfaction werden die folgenden Ordner erstellen:

    myapp 
        |- apache2 
        |- htdocs 
    
  • Webfaction wird auch ein einfaches Skript index.py in Ihrem htdocs Verzeichnis automatisch erstellen. Überprüfen Sie, ob das Beispielskript das Stammverzeichnis Ihrer neu erstellten Anwendung besucht (um die Webfaction zu minimieren, müssen Sie die App auf einer Website "mounten"). Wenn es ändern alle OK, um das Skript den Inhalt Löschen und Hinzufügen:

    from myapp import app as application 
    
  • In apache2/conf/httpd.conf die follwing Zeilen hinzufügen:

    WSGIPythonPath /home/username/webapps/myapp/htdocs/ 
    #If you do not specify the next directive the app *will* work but you will 
    #see index.py in the path of all subdir 
    WSGIScriptAlias//home/username/webapps/myapp/htdocs/index.py 
    
    
    <Directory /home/username/webapps/myapp/htdocs> 
        AddHandler wsgi-script .py 
        RewriteEngine on 
        RewriteBase/
        WSGIScriptReloading On 
    </Directory> 
    
  • Restart apache2

+7

Beachten Sie, dass sich myapp.py im Suchpfad des Python-Moduls befinden muss. Sie können das einfach tun, indem Sie Ihrem index.py den folgenden Code hinzufügen (wenn myapp.py neben dem Index gespeichert ist).py): 'import sys sys.path.append ('/ home//webapps//htdocs')' –

+0

Eigentlich, ohne Tweaking 'sys.path', bekam ich 500 internen Fehler, der verursacht wurde von einem Python ImportError, der von der Apache-Protokolldatei in '/ home//logs/user/error_ .log' angezeigt wurde. –

1

Sie müssen eine Anwendung "Benutzerdefinierte Anwendung (Überwachung des Anschlusses)" einrichten. Notieren Sie sich den zugewiesenen Port. Dann in Ihrem Flask Code, müssen Sie hard den Hafen setzen:

if __name__ == __main__: 
    app.run(host='0.0.0.0' port=XXXXXXX) 

Wo Sie ersetzen XXXXXXX mit dem Hafen, die zufällig auf Ihrer benutzerdefinierten App zugeordnet ist.

Hoffe, dass hilft.

EDIT:

Bitte benutzen Sie Raben's Answer, sollte diese Art und Weise nicht in der Produktion eingesetzt werden.

+0

Die Verwendung von app.run wird für die Produktion nicht empfohlen. Es ist einfach und wird die Arbeit schnell erledigen, aber wenn Ihr Projekt reift, sollten Sie zu etwas wie mod_wsgi wechseln. – Joe

+0

Schritt 2: Über das Bedienfeld "Website hinzufügen", das auf diese App zeigt. – Shekhar

+0

Vereinbaren Sie mit Joe, das ist schlecht für die Produktion. app.run() sollte nur für die Entwicklung verwendet werden. –

Verwandte Themen