Résoudre TemplateNotFound erreur de Flacon en vertu de Gunicorn
J'ai un Flacon d'application que je suis en train de déployer à l'aide de Gunicorn et de nginx. Cependant, bien qu'il fonctionne très bien en local, il jette un TemplateNotFound d'erreur quand je le lance avec Gunicorn sur mon serveur distant.
Je ne suis pas sûr de savoir comment même de démarrer le débogage de ce, et encore moins pourquoi il ne fonctionne pas...aimerais de l'aide sur l'ancien, si ce n'est la dernière. J'ai pensé que c'était peut-être un problème d'autorisations, de sorte chmod avais les modèles de dossier en 777...pas de chance. Voici tous les relavant de détails:
script d'installation
De départ avec un nu-installer Ubuntu 10.04, j'exécute ce afin de configurer le serveur et tirez dans mon code: https://github.com/total-impact/total-impact-deploy/blob/master/deploy.sh. Ensuite j'ai mis ce nginx fichier de config dans /etc/nginx/sites-available/total-impact:
server {
location / {
proxy_pass http://127.0.0.1:8000;
}
}
Enfin, je peux naviguer dans le répertoire app et exécuter gunicorn web:app
, et a frappé l'adresse IP du serveur. Cela génère un 500 dans le navigateur, et cette sortie sur la ligne de commande:
trace de la pile:
root@jc:/home/ti/total-impact-webapp/totalimpactwebapp# gunicorn web:app2012-05-28 23:15:06 [15313] [INFO] Starting gunicorn 0.14.3
2012-05-28 23:15:06 [15313] [INFO] Listening at: http://127.0.0.1:8000 (15313)
2012-05-28 23:15:06 [15313] [INFO] Using worker: sync
2012-05-28 23:15:06 [15316] [INFO] Booting worker with pid: 15316
2012-05-28 23:15:12,274 - totalimpactwebapp.core - ERROR - Exception on / [GET]
Traceback (most recent call last):
File "/usr/local/lib/python2.6/dist-packages/flask/app.py", line 1292, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python2.6/dist-packages/flask/app.py", line 1062, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python2.6/dist-packages/flask/app.py", line 1060, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python2.6/dist-packages/flask/app.py", line 1047, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/ti/total-impact-webapp/totalimpactwebapp/web.py", line 60, in home
return render_template('index.html', commits=False)
File "/usr/local/lib/python2.6/dist-packages/flask/templating.py", line 120, in render_template
return _render(ctx.app.jinja_env.get_template(template_name),
File "/usr/local/lib/python2.6/dist-packages/jinja2/environment.py", line 719, in get_template
return self._load_template(name, self.make_globals(globals))
File "/usr/local/lib/python2.6/dist-packages/jinja2/environment.py", line 693, in _load_template
template = self.loader.load(self, name, globals)
File "/usr/local/lib/python2.6/dist-packages/jinja2/loaders.py", line 115, in load source, filename, uptodate = self.get_source(environment, name)
File "/usr/local/lib/python2.6/dist-packages/flask/templating.py", line 61, in get_source
raise TemplateNotFound(template)
TemplateNotFound: index.html
mv template templates
a fait le tour et je suis passé à traquer l'erreur suivante. 🙂OriginalL'auteur thisismyname | 2012-05-29
Vous devez vous connecter pour publier un commentaire.
Sont vos modèles dans [app root]/templates/?
Si oui, assurez-vous que votre chemin d'accès est correct. De mettre ce que la première ligne dans la vue qui s'occupe de votre page d'accueil:
Si c'est ce que vous vous attendez à voir - ou si vous êtes à l'aide de Plans ou d'une autre méthode qui modifie la valeur par défaut de Jinja l'Environnement en quelque sorte - c'est un peu plus compliqué.
Curieusement, Jinja ne semble pas avoir un jinja2.De l'environnement.FileSystemLoader.get_search_path() la méthode. Je suppose qu'il aurait un 🙁
from os.path import abspath, dirname; app.root_path = abspath(dirname(__file__))
. (mon script principal est appeléflask_app.py
et est dans le répertoire racine du projet -- c'est à dire le même répertoire que celui contenanttemplates
etstatic
.)OriginalL'auteur Lyndsy Simon
Aujourd'hui, j'ai éprouvé des problèmes identiques après une longue période de ma Gourde application se comporter tout à fait normalement (c'est à dire de ne pas jeter de TemplateNotFound exceptions). Aucune des approches mentionnées par d'autres ici frappé la marque ou semblait approprié (par exemple
app.debug
, chemin de manipulation).Au lieu de cela, j'ai suivi à la norme Flacon app ligne d'initialisation:
J'avais changé
__name__
à une autre valeur (pour avoir accès à un nommé logger), ne les attendez pas pour tout ce carnage à se dérouler 🙂 Ne pas modifier cette valeur, sauf si vous êtes très familier avec Flacon internes.OriginalL'auteur Alex Nunes
Je viens de passer 2 heures dans une situation similaire et j'ai pensé poster ce qui a fini par être la solution.
J'ai été tout d'un coup se TemplateNotFound des erreurs dans les logs Apache de mon Flacon d'application, dans la production, qui avait été fonctionne bien jusqu'alors. Cela a abouti à 500 erreurs sur le site.
Premier problème était que le TemplateNotFound erreurs ne montrent pas moins que j'ai eu Flacon de "debug", le drapeau est -- il n'y avait aucun signe de problèmes à tous dans le log d'Apache malgré LogLevel ensemble de
info
.L'exécution de l'application "locale" (Flacon écoute sur
localhost:5000
) était très bien (on peut tester les pages viawget 127.0.0.0:5000
). Il s'est avéré qu'une copie de la web app code python avais atterri dans le répertoire ci-dessus où il aurait dû l'être. Ce fut importé par les wsgi première et, par conséquent, le chemin d'accès relatif à des modèles était incorrecte.OriginalL'auteur Will