我一直在使用virtualenv在localhost中测试我的应用程序,因为我有隔离环境,可以安全地测试新版本的包。
现在,我必须将我的应用程序部署到生产服务器。我想知道我是否也应该使用virtualenv生产服务器或只是正常安装应该做。由于它是生产服务器,我总是可以使用我在开发服务器中测试的正确版本(在virtual-env下)
答案 0 :(得分:47)
如果您认为自己将在网络服务器上运行多个项目,我会这样做。只要你有两个项目,你就有可能在将来升级任何python包时破坏另一个站点。
答案 1 :(得分:15)
是否为django生产服务器推荐了virtualenv?
是的,它使您的项目不依赖于系统环境的某些方面,并且它还允许您使部署过程更加清晰和可配置。
我使用fabric,pip和virtualenv来部署我所有的Django项目。
答案 2 :(得分:9)
是的,我认为您应该使用virtualenv将其部署到生产环境中。它使您的工作变得更轻松,更清洁,特别是如果您计划部署多种服务,例如基于django的网站或其他python项目。您不希望他们每个人都使用他们的软件包来污染全局python环境。
我认为virtualenv将帮助您干净地管理所有依赖项。
要更新您的生产环境,您只需要:
pip -r name_of_your_requirements_file.txt
我在生产中使用virtualenvs,你可以使用uWSGI为应用程序提供服务,将Cherokee作为Web服务器。
要在生产中使用virtualenv,您需要将其路径添加到PYTHONPATH。
例如,如果您的env的路径为“/ 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)
您可以根据自己的设置进行调整,以防您在shell中执行以下操作:
export PYTHONPATH:$PYTHONPATH:/home/www/my_project/env/lib/python2.7/site-packages/
您还需要将包含settings.py文件的目录添加到PYTHONPATH,以便Django能够发现它。只需按照类似的方式进行操作。
答案 3 :(得分:3)
在大多数情况下,我同意最好有一个virtualenv即使你第一次设置服务器时似乎不需要它。也就是说,如果您使用某种云服务并在短时间内为特定任务启动服务器,那么我没有看到使用virtualenv的重点。
答案 4 :(得分:2)
我认为,当uwsgi使用vhost标志直接支持它时,它是一个完全支持的生产解决方案的良好迹象:http://projects.unbit.it/uwsgi/wiki/VirtualHosting
答案 5 :(得分:0)
使用Docker容器进行开发和生产部署现在非常流行,所以如果您正在考虑遵循这一趋势,那么您将不再需要virtualenv。