我可以在virtualenv中运行Apache,mod_wsgi和MongoDB吗?

时间:2014-11-25 12:25:24

标签: apache python-2.7 virtualenv mod-wsgi

我正在学习virtualenvmod_wsgi这些是我最喜欢的文章:

https://code.google.com/p/modwsgi/wiki/VirtualEnvironments
(作者mod_wsgi,格雷厄姆·杜普顿)。

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

我知道virtualenv允许我拥有Python和Python包的独立实例。

但这与Apachemod_wsgiMongoDB等内容有什么关系?

这些东西也可以包含在这个虚拟环境中吗?

我感兴趣的场景是苹果有一个“自我依赖”的本地应用程序(在其他系统上很容易安装) - virtualenv似乎在某种程度上实现了这一点,但是Apachemod_wsgiMongoDB仅存在于此更广泛的“系统级别”,还是存在于虚拟环境中?

1 个答案:

答案 0 :(得分:0)

virtualenv仅适用于python包,因此您无法在其中运行系统应用程序实例,例如apache

修改:正如@Graham Dumpleton所提到的,可以在virtualenv内使用mod_wsgi-httpd安装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的配置不会有任何不同,因为它们是系统范围内运行的服务。