【问题标题】:Can I run Apache, mod_wsgi and MongoDB within virtualenv?我可以在 virtualenv 中运行 Apache、mod_wsgi 和 MongoDB 吗?
【发布时间】:2015-01-23 10:55:47
【问题描述】:

我正在了解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 似乎在一定程度上启用了这一点,但 @987654331 可以@、mod_wsgiMongoDB 仅存在于这个更广泛的“系统级别”,还是可以存在于虚拟环境中?

【问题讨论】:

  • 你的意思是你想要一个“虚拟”的apache吗?和一个“虚拟 mongodb”?因为这些是servers.not 环境。尽管您可以为此考虑 vagrant 或 docker。

标签: apache python-2.7 virtualenv mod-wsgi


【解决方案1】:

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 的配置不会有任何不同,因为它们是系统范围的运行服务。

【讨论】:

猜你喜欢
  • 2011-06-04
  • 2012-07-30
  • 1970-01-01
  • 2012-06-09
  • 2017-02-18
  • 1970-01-01
  • 1970-01-01
  • 2020-10-11
  • 2012-01-03
相关资源
最近更新 更多