我一直在使用virtualenv在本地主机中测试我的应用程序,因为我具有隔离的环境并且可以安全地测试软件包的新发行版。
现在到了必须将我的应用程序部署到生产服务器的时候了。我想知道我是否还应该将virtualenv用于生产服务器,还是应该只进行常规安装。由于它是生产服务器,因此我始终可以使用在开发服务器中测试的正确版本(在virtual-env下)
我一直在使用virtualenv在本地主机中测试我的应用程序,因为我具有隔离的环境并且可以安全地测试软件包的新发行版。
现在到了必须将我的应用程序部署到生产服务器的时候了。我想知道我是否还应该将virtualenv用于生产服务器,还是应该只进行常规安装。由于它是生产服务器,因此我始终可以使用在开发服务器中测试的正确版本(在virtual-env下)
Answers:
如果您认为自己将在Web服务器上运行多个项目,那么我会这样做。一旦您拥有两个项目,便冒着将来升级任何Python软件包的风险,从而破坏了另一个站点。
是否为django生产服务器推荐virtualenv?
是的,它使您的项目不依赖于系统环境的某些方面,并且还使您可以使部署过程更加清晰和可配置。
我使用fabric,pip和virtualenv部署我的所有Django项目。
是的,我认为您应该使用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能够发现它。只需以类似的方式进行即可。
我认为这很好地表明了当uwsgi通过vhost标志直接支持它时,它是一个完全受支持的生产解决方案:http : //projects.unbit.it/uwsgi/wiki/VirtualHosting
现在,将Docker容器用于开发和生产部署非常流行,因此,如果您考虑遵循这一趋势,就不再需要virtualenv。