2010-07-18 5 views
11

Quelqu'un sait comment déployer une simple application Flask sur Webfaction? Je connais Webfaction support mod_wsgi et j'ai lu le guide sur le site Flask mais je n'arrive toujours pas à faire fonctionner mon application. Quelqu'un a une configuration de travail?Comment déployer l'application Flask sur Webfaction?

MISE À JOUR pour répondre à un commentaire de Graham Dumpleton.

Je reçois une erreur 500 interne du serveur. Apache ne montre aucune erreur dans les journaux. Le script WSGI est exécuté et semble créer l'application correctement, mais je reçois toujours une erreur 500.

Merci.

+1

Quelle est l'erreur réelle vous obtenons? –

+0

Essayez d'activer le débogage dans Flask. J'ai oublié comment faire cela, donc vous pouvez demander sur le canal #pocco irc. Si vous utilisez le mode démon mod_wsgi avec un seul processus, vous pouvez également activer le débogueur Flask. –

+0

avez-vous déjà eu ce travail? La réponse de JoshFinnie a-t-elle fonctionné pour vous? –

Répondre

16

Je l'ai travailler avec la procédure suivante:

  • créer et application nommée 'myapp' de type mod_wsgi 3.3/Python 2.7. Webfaction va créer les dossiers suivants:

    myapp 
        |- apache2 
        |- htdocs 
    
  • webfaction également créer automatiquement un script simple index.py dans votre répertoire htdocs. Vérifiez si l'exemple de script fonctionne en visitant la racine de votre application nouvellement créée (pour faire un peu de Webfaction, vous devez "monter" l'application sur un site web). Si tout cela est OK modifier le script de supprimer le contenu et en ajoutant:

    from myapp import app as application 
    
  • Dans apache2/conf/httpd.conf ajouter les lignes 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> 
    
  • Restart apache2

+7

notez que myapp.py doit être dans le chemin de recherche du module python. Vous pouvez simplement le faire en ajoutant le code suivant à votre index.py (si myapp.py est stocké en regard de l'index.py): 'sys.path.append ('/ home//webapps//htdocs')' –

+0

En fait, sans peaufiner 'sys.path', j'ai 500 erreur interne qui a été causée par un ImportError Python, qui a été indiqué par le fichier journal Apache dans '/ home//logs/user/error_ .log'. –

1

Vous devez configurer une application "Application personnalisée (écoute sur le port)". Notez le port attribué. Ensuite, dans votre code Flask, vous devez mettre hardcode le port:

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

Où vous XXXXXXX remplacer par le port qui est attribué au hasard à votre application personnalisée.

Espérons que ça aide.

EDIT:

S'il vous plaît utiliser Raben's Answer, cette façon devrait pas être utilisé dans la production.

+0

L'utilisation de app.run n'est pas recommandée pour la production. C'est facile et le travail sera fait rapidement, mais quand votre projet arrive à maturité, vous devriez passer à quelque chose comme mod_wsgi. – Joe

+0

Étape 2: Par le biais du panneau de configuration "Ajouter site Web" pointant vers cette application. – Shekhar

+0

D'accord avec Joe, c'est mauvais pour la production. app.run() doit être utilisé uniquement pour le développement. –

Questions connexes