2014-11-25 34 views
0

我瞭解virtualenvmod_wsgi,這些都是我最喜歡的文章至今:我可以在virtualenv中運行Apache,mod_wsgi和MongoDB嗎?

https://code.google.com/p/modwsgi/wiki/VirtualEnvironments
(由mod_wsgi筆者,格雷厄姆鄧普爾頓)。

http://www.dabapps.com/blog/introduction-to-pip-and-virtualenv-python/

我明白virtualenv讓我有Python和Python包的獨立實例。

但是,這與Apache,mod_wsgiMongoDB之間的關係如何?

這些東西也可以包含在這個虛擬環境中嗎?

我感興趣的方案是爲蘋果有一個本地的應用程序,是「自力更生」(這將是易於安裝在其他系統上) - virtualenv似乎使這在一定程度上,但可以Apachemod_wsgiMongoDB只存在於這個更廣泛的「系統級」,還是可以存在於虛擬環境中?

+0

你的意思是你想要一個「虛擬」Apache?和「虛擬的mongodb」?因爲這些是servers.not環境。儘管你可以考慮流浪漢或碼頭工。 – 2014-11-25 16:00:53

回答

0

virtualenv僅適用於python軟件包, 因此您不能在其中運行系統應用程序的實例,如apache

編輯:由於@Graham鄧普爾頓提到的,它可以安裝使用mod_wsgi-httpdvirtualenv apache httpd的。但是,正如我之前所說的virtualenv是用於python軟件包的,所以它是查找/編寫解決問題的軟件包的問題。

也就是說,你可以讓使用mod_wsgi的Apache利用virtualenv。訣竅是,配置必須在python文件中完成。

說你正在試圖安裝Django項目myproject,名爲myproject的virtualenv中運行,這裏是你的wsgi.py

import os, sys, site 

path = os.path.split(os.path.dirname(__file__))[0] 
if path not in sys.path: 
    sys.path.append(path) 

site.addsitedir('~/.virtualenvs/myproject/local/lib/python2.7/site-packages') 

os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings' 

activate_env=os.path.expanduser(
    "~/.virtualenvs/myproject/bin/activate_this.py") 
execfile(activate_env, dict(__file__=activate_env)) 

import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 

的配置Apache或MongoDB中也不會有任何不同,因爲它們是系統廣泛的運行服務。

+2

並非完全如此。您可以將Apache安裝到virtualenv和mod_wsgi中,以便在使用mod_wsgi-express時使用它。這是一種繞過Apache和mod_wsgi系統的方式。 https://pypi.python.org/pypi/mod_wsgi-httpd https://pypi.python.org/pypi/mod_wsgi – 2015-02-09 05:21:45

+0

哈,很酷的東西。不知道! – 2015-02-09 05:58:40

相關問題