virtualenv推荐Django生产服务器?
我一直使用virtualenv来testing我的应用程序在本地主机,因为我有孤立的环境,并可以安全地testing新版本的软件包。
现在是我必须将我的应用程序部署到生产服务器的时候了。 我想知道如果我也应该使用virtualenv生产服务器或只是正常的安装应该做的。 由于它是生产服务器,我总是可以使用我在dev服务器上testing的正确版本(在virtual-env下)
我会这样做,如果你以为你会在networking服务器上运行多个项目。 只要你有两个项目,你将冒着未来升级任何破坏其他网站的python软件包的风险。
virtualenv推荐Django生产服务器?
是的,这使得您的项目不依赖于系统环境的某些方面,而且还使您可以使部署过程更加清晰和可configuration。
我使用fabric,pip和virtualenv来部署我所有的Django项目。
是的,我认为你应该使用virtualenv将其部署到生产环境中。 它使事情变得简单和清晰,特别是如果你打算部署多个服务,例如基于django的网站或其他python项目。 你不希望他们每个人都用自己的软件包来污染全球的Python环境。
我认为virtualenv将帮助你干净地pipe理你所有的依赖。
要更新您的生产环境,您只需要:
pip -r name_of_your_requirements_file.txt
我在生产中使用了virtualenvs,并且可以使用uWSGI来为应用程序提供服务,使用Cherokee作为Web服务器。
要在生产中使用您的virtualenv,您需要将其path添加到您的PYTHONPATH中。
例如,如果你的env的path是“/ home / www / my_project / env /”,那么添加的path是:
/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能够发现它。 只要以类似的方式进行即可。
在大多数情况下,我会同意最好是有一个virtualenv,即使它看起来不像你需要它,当你第一次设置服务器。 这就是说,如果您正在使用某种云服务并在短时间内为特定任务启动服务器,那么我不会看到使用virtualenv。
我认为它是一个很好的迹象表明,它是一个完全支持的生产解决scheme,当uwsgi直接支持与vhost标志: http : //projects.unbit.it/uwsgi/wiki/VirtualHosting
使用Docker容器进行开发和生产部署现在非常stream行,所以如果你正在考虑遵循这个趋势,你将不再需要virtualenv。