nginx + uwsgi + 虚拟环境。里面有什么?

nginx + uwsgi + virtual environment. What goes inside?

这似乎是一个简单的问题,但我无法在任何地方找到它的答案。我看过的每个教程做的事情都略有不同,而且我很确定我已经看到它以两种方式完成。

在我的开发环境中,python、flask 和我的应用程序的所有其他依赖项都在虚拟环境中。

配置生产环境时,Nginx和uWSGI是否进入虚拟环境?

谢谢!

首先,Nginx从不走Virtualenv。这是一项 os 服务,与 python 无关。它只服务于网络请求,并且知道如何将它们传递给上游服务(如 uwsgi)。

第二;不要将不需要单独版本的东西放在 virtualenv 中。 Uwsgi 现在相当稳定,所以你永远不需要单独的版本;所以不要把它放在 venv.

第三;当你计划生产部署时,让事情像 possible 一样简单。任何增加的复杂性只会增加失败的可能性。因此,除非您绝对需要,否则不要将 venv 放在您的产品服务器上。即便如此,您也可能会在该服务器上放置很多东西。让您的服务器一心一意。我发现使用多台机器(尤其是像 AWS 这样的云服务)更容易,每台机器都有一个 purpose 而不是将所有东西都塞到一台大机器上(一个 screwball 进程可以吃掉其他人的所有内存)

第四;当你确实需要更多 python projects/services 时,最好将它们与 docker 之类的东西分开,因为这样它们更易于维护,并且与其他部分更好地隔离。