Problembehandlung für TemplateNotFound-Fehler in Flask unter Gunicorn
Ich habe eine Flask-App, die ich mit Gunicorn und Nginx bereitstellen möchte. Obwohl es lokal einwandfrei funktioniert, gibt es einen TemplateNotFound-Fehler aus, wenn ich mit Gunicorn auf meinem Remote-Server starte.
Ich bin mir nicht sicher, wie ich überhaupt anfangen soll, das zu debuggen, geschweige denn, warum es fehlschlägt. Ich würde gerne bei ersteren helfen, wenn nicht bei letzteren. Ich dachte, es wäre vielleicht ein Problem mit den Berechtigungen, also habe ich den Vorlagenordner auf 777 geändert ... kein Glück. Hier sind alle relevanten Details:
Skript installierenBeginnend mit einer bloßen Ubuntu 10.04-Installation führe ich Folgendes aus, um den Server einzurichten und meinen Code einzugeben:https://github.com/total-impact/total-impact-deploy/blob/master/deploy.sh. Dann habe ich diese Nginx-Konfigurationsdatei unter / etc / nginx / sites-available / total-impact abgelegt:
server {
location / {
proxy_pass http://127.0.0.1:8000;
}
}
Schließlich navigiere ich im App-Verzeichnis und startegunicorn web:app
und geben Sie die IP-Adresse des Servers ein. Dies erzeugt eine 500 im Browser und diese Ausgabe in der Befehlszeile:
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