是否为django生产服务器推荐virtualenv?[关闭]


77

我一直在使用virtualenv在本地主机中测试我的应用程序,因为我具有隔离的环境并且可以安全地测试软件包的新发行版。

现在到了必须将我的应用程序部署到生产服务器的时候了。我想知道我是否还应该将virtualenv用于生产服务器,还是应该只进行常规安装。由于它是生产服务器,因此我始终可以使用在开发服务器中测试的正确版本(在virtual-env下)


3
请注意,官方Django文档提到了在生产环境中使用virtualenv:docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/…–
Paul D. Waite

我为@bartek推荐了该教程。Nginx和uWSGI部署的美丽简单性
Sven Rojek,2013年

Answers:


48

如果您认为自己将在Web服务器上运行多个项目,那么我会这样做。一旦您拥有两个项目,便冒着将来升级任何Python软件包的风险,从而破坏了另一个站点。


1
这就引出了一个问题,当您知道此服务器仅用于服务单个应用程序时,是否应使用virtualenv。
埃里克·威尔逊

6
您不能保证DevOps不会推出需要Python依赖项的内容。应始终分开。
Aleksey Korzun

15

是否为django生产服务器推荐virtualenv?

是的,它使您的项目不依赖于系统环境的某些方面,并且还使您可以使部署过程更加清晰和可配置。

我使用fabric,pip和virtualenv部署我的所有Django项目。


我不认为您想要的单词是“ undependent”(系统不能依赖您的项目吗?)。澄清的语言。
克里斯·摩根

9

是的,我认为您应该使用virtualenv将其部署到生产环境中。它使您的工作变得更加轻松和整洁,尤其是当您计划部署多种服务时,例如基于django的网站或其他python项目。您不希望他们每个人都用他们的软件包污染全球python环境。

我认为virtualenv将帮助您干净地管理所有依赖项。

要更新生产环境,您需要做的是:

pip -r name_of_your_requirements_file.txt

我在生产中使用了virtualenvs,您可以使用uWSGI将切诺基作为网络服务器来为应用程序提供服务。

要在生产环境中使用virtualenv,您需要将其路径添加到PYTHONPATH。

例如,如果您的环境的路径为“ / home / www / my_project / env /”,则添加的路径为:

/home/www/env/lib/python2.7/site-packages/

您可以通过许多不同的方式进行设置,但是,如果要通过manage.py生成FCGI或uWSGI接口,只需在manage.py的最顶部添加以下内容(在其余部分之前):

import os
my_virtualenv_path = "/home/www/my_project/env/lib/python2.7/site-packages/"
# Add it to your PYTHONPATH
os.path.append(my_virtualenv_path)

您可以根据您的设置进行调整,以防万一您还可以在外壳中执行以下操作:

export PYTHONPATH:$PYTHONPATH:/home/www/my_project/env/lib/python2.7/site-packages/

您还需要将包含settings.py文件的目录添加到PYTHONPATH中,以便Django能够发现它。只需以类似的方式进行即可。


3

在大多数情况下,我同意最好有一个virtualenv,即使在初次设置服务器时似乎并不需要它。这就是说,如果您正在使用某种云服务,并在短时间内将服务器用于特定任务,那么我看不到使用virtualenv的意义。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.