Gunicorn下从瓶解决TemplateNotFound错误(Troubleshoot Templ

2019-07-29 14:40发布

我已经得到了我想要使用Gunicorn和nginx的部署瓶的应用程序。 然而,虽然本地工作正常,它抛出,当我和我的Gunicorn远程服务器上运行在一个TemplateNotFound错误。

我不知道如何甚至开始调试这一点,更不用说它为什么失败......很想对前者的帮助,如果不是后者。 我想,也许这是一个权限问题,所以chmod'd模板文件夹777 ......没有运气。 这里是所有的细节初步认识:

安装脚本

与裸的Ubuntu 10.04开始安装,我跑这来设置服务器,并在我的代码拉: https://github.com/total-impact/total-impact-deploy/blob/master/deploy.sh 。 然后我把这个nginx的配置文件以在/ etc / nginx的/网站可用/总影响:

server {
    location / {
        proxy_pass http://127.0.0.1:8000;
    }
}

最后,我浏览应用程序目录,然后运行gunicorn web:app ,并击中了服务器的IP地址。 由此,在浏览器500,并且在命令行上的输出:

堆栈跟踪:

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

Answer 1:

是你在[应用程序根]模板/模板/?

如果是这样,请检查以确保您的路径是正确的。 把这个作为在处理您的主页视图中的第一行:

return app.root_path

如果这是你希望看到什么 - 或者,如果你使用的蓝图或其他改变默认的神社环境莫名其妙方法 - 这是一个更复杂一点。

奇怪的是,神社似乎并不具有jinja2.Environment.FileSystemLoader.get_search_path()方法。 我以为这将有一个:(



Answer 2:

今天,我在我的应用程序烧瓶行为相当正常(即不扔TemplateNotFound例外)长时间之后经历了相同的问题。 其他人所说的方法都没有在这里打了标记或似乎是适当的(例如app.debug ,路径操作)。

相反,我跟踪它到标准瓶的应用程序初始化行:

app = Flask(__name__)

我改变了__name__另一个值(以访问指定logger),没想到这一切的大屠杀展开,除非你非常熟悉瓶内部:-)不要更改此值。



Answer 3:

我刚刚花了2个小时一个非常类似的情况,我想我会发布什么最终被解决。

我突然凑了Apache日志TemplateNotFound错误从我的瓶的应用程序,在生产,这已经运行良好,直到那时。 这导致整个网站500错误。

第一个问题是,TemplateNotFound错误并未出现,除非我有瓶的“调试”标志上-没有任何问题,在Apache日志的一切,尽管loglevel设置为标志info

运行应用程序“本地”(瓶上监听localhost:5000 )被罚款(可以通过测试页面wget 127.0.0.0:5000 )。 原来,主Web应用程序的Python代码的副本在上面,它应该已经目录在某种程度上降落。 这是通过WSGI第一进口,因此,对模板的相对路径是不正确的。



文章来源: Troubleshoot TemplateNotFound error from Flask under Gunicorn