Comment déployer structuré Flacon application sur AWS elastic beanstalk
Après le déploiement réussi d'une application de test en utilisant les étapes décrites ici:
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_Python_flask.html
J'ai essayé de déployer mon flacon d'application qui a la structure suivante:
myApp/
runServer.py
requirements.txt
myApp/
__init__.py
helpers.py
clean.sh
static/
myApp.css
handlers/
__init__.py
views.py
templates/
layout.html
viewOne.html
viewTwo.html
Où views.py
contient les mappages d'url.
J'ai essayé de l'initialisation de la eb
exemple dans le répertoire de racine ainsi que dans le myApp
module et git aws.push
mais j'obtiens l'erreur suivante sur AWS tableau de bord:
ERROR Your WSGIPath refers to a file that does not exist.
et l'application ne fonctionne pas (erreur 404 pour tout chemin).
Comment puis-je déployer au-dessus de la Flask
application pour elastic beanstalk?
Vous devez vous connecter pour publier un commentaire.
Ajouter les éléments suivants à
.ebextensions/<env-name>.config
:Mise à jour:
Si vous n'avez pas .ebextensions répertoire, veuillez en créer un pour le projet. Vous pouvez trouver plus d'informations de ce qui peut être fait au sujet de la configuration du conteneur dans De les personnaliser et de Configurer les Environnements AWS Elastic Beanstalk guide.
J'ai rencontré un problème similaire déploiement d'un Flacon d'application de EB, avec la même structure de répertoire, et a dû faire 2 choses:
Mise à jour de mon manage.py pour créer un objet de la demande de nom, pas d'application
Créer
.ebextensions/myapp.config
, et de définir le bloc suivant à point à manage.pyCe qui nous Elastic Beanstalk trouver l'application appelable correctement.
C'est décrite brièvement à les docs officielles, et est décrit plus en détail dans ce blog
ÉDITION - voir le projet de la structure ci-dessous
De awsebcli 3.0, vous pouvez modifier vos paramètres de configuration pour représenter votre
WSGI
chemin d'accès viaeb config
. Leconfig
commande sera alors tirer (et de l'ouvrir dans votre ligne de commande par défaut de l'éditeur de texte, j'.e nano) éditable une config basée sur les paramètres de configuration actuels. Vous aurez alors à la recherche pourWSGI
et mettre à jour son chemin d'accès de cette façon. Après avoir enregistré le fichier et quitter, votreWSGI
chemin d'accès sera mis à jour automatiquement.eb config
.eb config get <whatever>
télécharger le fichier de configuration pour la configuration sauvegardée. Et il ne fait aucune mention de la WSGIPath là. Mais il le fait, en quelque sorte, écraser ou de savoir faire abstraction de ce que vous avez dans votre .ebextensions/*.les fichiers de configuration lorsque vous utilisez ces configurations enregistrées.eb config save
va créer une nouvelle configuration enregistrée, qui montre que les paramètres fixés à un niveau api. Sens, si elle n'est pas dans votre configuration enregistrée, il ne sera pas remplacer votre ebextensions.Cette erreur s'affiche parce que Beanstalk, par défaut, la recherche application.py. Vérifier à Beanstalk de l'INTERFACE utilisateur web,
Configuration > Software Configuration
,WSGIPath
est mappé àapplication.py
Mise à jour de la
WSGIPath
comme indiqué dans les précédentes réponses ou renommerapplication.py
fichier.WSGI de configuration a été douloureux pour moi. Je n'ai changé WSCI paramètres à l'aide de
eb config
de commande, mais il ne fonctionne pas. Ci-dessous, vous pouvez résoudre ce problème en 5 étapes faciles.1 - Déplacé
app.py
fonction de la racine de l'annuaire (où j'ai finieb init
commande.2 - Aussi renommé
app.py
commeapplication.py
et que initilized application commeapplication = Flask(__name__)
pasapp = Flask(__name__)
3-
eb deploy
n'a pas travaillé après ce (dans le même projet) j'ai essayé de réparer config en utilisanteb config
mais il était trop poilu pour faire le tri. Supprimez tous .extensions .gitignore etc à partir de votre projet.4 - re initialiser votre projet sur EB avec
eb init
et suivez les invites. lorsque le déploiement est terminé,eb open
serait de lancer votre webapp (espérons-le!)Lorsque j'ai rencontré ce problème, c'était parce que j'étais en utilisant l'interface utilisateur de télécharger un zip de mes fichiers de projet. Au départ, j'étais compression au niveau du projet de répertoire et de télécharger le fichier compressé à EB.
Ensuite, j'ai changé tout simplement de téléchargement d'un zip des fichiers de projet eux-mêmes-c'est à dire sélectionner tous les fichiers et les envoyer à un zip-et puis l'interface graphique utilitaire de téléchargement a été en mesure de trouver mon application.py fichier sans problème, parce que la application.py le fichier n'était pas dans un sous-dossier.
Bien, Dans mon cas, j'ai suivi l'ensemble du processus et conventions, mais était encore en train 404. Le problème était mon environnement virtuel. J'étais ignorant de l'environnement config les dossiers/fichiers dans mon .gitignore, mais pas dans .ebignore. Après la création .ebignore et en ignorant tous les dossiers/fichiers qui ne sont pas liées au projet de code, correction du problème.