2012-02-18 21 views
70

我一直在使用virtualenv在本地主機上測試我的應用程序,因爲我有獨立的環境並且可以安全地測試軟件包的新版本。virtualenv推薦用於django製作服務器嗎?

現在它來了時,我有我的應用程序部署到生產服務器的時間。我想知道如果我也應該使用virtualenv生產服務器或只是正常的安裝應該做的。由於它是生產服務器,我可以一直使用,我在開發服務器測試的正確版本(在虛擬ENV)

+3

請注意官方的Django文檔提到了在生產中使用virtualenv:https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/#using-a-virtualenv – 2012-12-14 18:16:49

+0

我建議@ bartek [nginx和uWSGI部署的美麗簡單](http://bartek.im/blog/2012/07/08/simplicity-nginx-uwsgi-deployment.html) – 2013-05-13 12:03:53

+0

Heroku建議:https:// devcenter。 heroku.com/articles/deploying-python – 2016-05-13 13:30:10

回答

42

我會做這樣的說法,如果你有沒有想過你會遇到web服務器上的多個項目。只要你有兩個項目,你就有可能在將來升級任何打破其他站點的python軟件包。

+1

這引出了當你知道這個服務器僅用於服務單個應用程序時是否應該使用virtualenv的問題。 – 2014-11-21 18:04:49

+4

您不能保證DevOps不會推出需要Python依賴項的東西。應該在任何時候分開。 – 2015-02-24 19:18:45

9

是的,我認爲你應該使用的virtualenv將其部署到生產環境。它使事情變得簡單和清晰,特別是如果您打算部署多個服務,例如基於django的網站或其他python項目。你不希望他們每個人都用他們的軟件包來污染全局python環境。

我想的virtualenv會幫助你清晰地管理所有的依賴關係。

要更新生產ENV所有你需要做的是:

pip -r name_of_your_requirements_file.txt 

我用virtualenvs在生產中,您可以使用uWSGI服務於應用,切諾基作爲Web服務器。

要使用的virtualenv在生產中,你需要它的路徑添加到您的PYTHONPATH。

例如,如果您的ENV具有路徑「/家庭/網絡/ 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能夠發現它。只需以類似的方式進行即可。

14

是的virtualenv推薦Django的生產服務器?

是的,它使您的項目不依賴於系統環境的某些方面,它還允許您使部署過程更清晰和可配置。

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

+0

我不認爲「不可靠」是你想要的詞(系統不能取決於你的項目?)。澄清的語言。 – 2012-02-18 09:52:33

3

在大多數情況下,我會同意最好是有一個virtualenv,即使它看起來不像你第一次設置服務器時需要它。這就是說,如果您正在使用某種雲服務並在短時間內爲特定任務啓動服務器,那麼我不會看到使用virtualenv的重點。

0

使用Docker容器進行開發和生產部署現在非常流行,所以如果你正在考慮遵循這個趨勢,你將不再需要virtualenv。

相關問題