【发布时间】:2018-08-17 14:25:35
【问题描述】:
当我意识到答案是什么时,我 99% 都写出了这个问题,所以我想我还是把它贴出来——连同答案——以防它可以帮助某人
我已经有一个烧瓶应用程序启动并运行了很长一段时间,没有任何问题。
在我的应用程序的 __init__.py 中,我在页面顶部添加了一个简单的导入语句:import thepackage 在所有常用的烧瓶和 sqlalchemy 导入之后。
- 如果我从虚拟环境中启动 python 解释器
import thepackage可以工作。 - 在解释器中
from app import thepackage也可以工作。 - Flask 的开发服务器工作:
app.run(host='0.0.0.0')在我访问my.ip.adr.ess:5000时为网页提供服务 - 与 gunicorn 一样,
gunicorn --bind 0.0.0.0:5000 wsgi:app在my.ip.adr.ess:5000提供网页服务。 - 但是,启用 nginx 并尝试访问位于
websitesdomain.com抛出 502。这是/var/log/nginx/error.log的示例:
2018/03/09 03:07:56 [crit] 12444#12444: *2 connect() to unix:/home/me/myapp/myapp.sock 失败(2:没有这样的>文件或目录) 连接上游时,客户端:xxx.xxx.xxx.xxx,服务器: websitedomain.com,请求:“GET / HTTP/1.1”,上游: “http://unix:/home/me/myapp/myapp.sock:/”,主机:“websitesdomain.com”
- 如果我删除导入,一切都会照常运行。
- 我已经仔细检查了我在
/etc/systemd/system/myapp.service中设置的虚拟环境的路径,但是 Flask 和 gunicorn 在那里没有问题。
然后我意识到
【问题讨论】:
-
您可以通过添加minimal reproducible example 使其对未来的读者更有用。
标签: python linux nginx flask environment-variables