2010-07-18 21 views
11

Qualcuno sa come distribuire una semplice applicazione Flask su Webfaction? Conosco il supporto di Webfaction mod_wsgi e ho letto la guida sul sito di Flask ma ancora non riesco a far funzionare la mia app. Qualcuno ha una configurazione funzionante?Come distribuire l'applicazione Flask su Webfaction?

UPDATE per rispondere a un commento di Graham Dumpleton.

Viene visualizzato un errore di 500 server interno. Apache non mostra alcun errore nei log. Lo script WSGI viene eseguito e sembra che crei correttamente l'applicazione, ma continuo a ricevere un errore di 500.

Grazie.

+1

Qual è l'errore effettivo si stanno ottenendo? –

+0

Prova ad attivare il debug in Flask. Ho dimenticato come farlo, quindi potresti chiederlo sul canale #pocco irc. Se si utilizza la modalità daemon mod_wsgi con un singolo processo, è anche possibile attivare il debugger Flask. –

+0

hai mai funzionato? La risposta di JoshFinnie ha funzionato per te? –

risposta

16

ho preso a lavorare con la seguente procedura:

  • creare e applicazione denominata 'myapp' di tipo mod_wsgi 3.3/Python 2.7. Webfaction creerà le seguenti cartelle:

    myapp 
        |- apache2 
        |- htdocs 
    
  • Webfaction creerà anche automaticamente un semplice script index.py nella directory htdocs. Controlla se lo script di esempio funziona visitando la root della tua applicazione appena creata (per eseguire thin su Webfaction devi "montare" l'app su un sito web). Se è tutto OK modificare lo script di eliminare il contenuto e aggiungendo:

    from myapp import app as application 
    
  • In apache2/conf/httpd.conf aggiungere le linee follwing:

    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> 
    
  • riavvio apache2

+7

nota che myapp.py deve essere nel percorso di ricerca del modulo python. Puoi farlo semplicemente aggiungendo il seguente codice al tuo index.py (se myapp.py è memorizzato accanto all'indice.py): 'import sys sys.path.append ('/ home//webapps//htdocs')' –

+0

In realtà, senza modificare 'sys.path', ho ricevuto 500 errori interni causati da un Python ImportError, che è stato indicato dal file di log di Apache in '/ home//logs/utente/errore_ .log'. –

1

È necessario impostare un'applicazione "Applicazione personalizzata (ascolto su porta)". Annotare la porta che è stata assegnata. Poi nel codice Flask, è necessario mettere hardcode porto:

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

Dove si sostituisce XXXXXXX con la porta che viene assegnato in modo casuale per la vostra applicazione personalizzata.

Spero che questo aiuti.

EDIT:

Si prega di utilizzare Raben's Answer, in questo modo non dovrebbe per essere utilizzati nella produzione.

+0

L'utilizzo di app.run non è consigliato per la produzione. È facile e il lavoro verrà svolto rapidamente, ma quando il tuo progetto sarà maturo, dovresti passare a qualcosa come mod_wsgi. – Joe

+0

Passaggio 2: tramite il pannello di controllo "Aggiungi sito Web" che punta a questa app. – Shekhar

+0

D'accordo con Joe, questo è negativo per la produzione. app.run() dovrebbe essere usato solo per lo sviluppo. –

Problemi correlati