2014-11-25 32 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

相关问题