virtualenv推荐用于django生产服务器吗?

w00*_*00d 75 python deployment django

我一直在使用virtualenv在localhost中测试我的应用程序,因为我有孤立的环境,可以安全地测试新版本的软件包.

现在,我必须将我的应用程序部署到生产服务器.我想知道我是否也应该使用virtualenv生产服务器或只是正常安装应该做.由于它是生产服务器,我总是可以使用我在开发服务器中测试的正确版本(在virtual-env下)

Kur*_*urt 47

如果您认为您将在网络服务器上运行多个项目,我会这样做.一旦你有两个项目,你就冒着将来升级任何python包破坏其他站点的风险.

  • 您无法保证DevOps不会推出需要Python依赖项的内容.应该在任何时候都是分开的. (5认同)
  • 这就引出了一个问题:当您知道该服务器仅用于服务单个应用程序时,是否应该使用 virtualenv。 (2认同)

Gre*_*hov 15

virtualenv推荐用于django生产服务器吗?

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

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


小智 9

是的,我认为您应该使用virtualenv将其部署到生产环境中.它使事情变得更容易和更清洁,特别是如果您计划部署多个服务,例如基于django的网站或其他python项目.您不希望他们每个人都使用他们的包来污染全局python环境.

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

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

pip -r name_of_your_requirements_file.txt
Run Code Online (Sandbox Code Playgroud)

我在生产中使用virtualenvs,你可以使用uWSGI为应用程序提供服务,将Cherokee作为Web服务器.

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

例如,如果您的env具有路径"/ home/www/my_project/env /",则添加的路径将是:

/home/www/env/lib/python2.7/site-packages/
Run Code Online (Sandbox Code Playgroud)

您可以通过多种不同的方式进行设置,但如果您通过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)
Run Code Online (Sandbox Code Playgroud)

您可以根据自己的设置进行调整,以防万一您也可以在shell中执行以下操作:

export PYTHONPATH:$PYTHONPATH:/home/www/my_project/env/lib/python2.7/site-packages/
Run Code Online (Sandbox Code Playgroud)

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