使用Apache与Mod_Python和多个Python安装在Virtualenv中运行Django

时间:2010-08-17 14:56:26

标签: python django apache mod-python virtualenv

我想使用mod_python在Apache中使用virtualenv在服务器上运行Django项目。现在我知道推荐使用的apache模块是mod_wsgi,但我现在不想安装它。

服务器上的默认python安装是python2.4,服务器上的其他一些网站使用它。因为我的项目是在python2.6上构建的,所以我在/ usr / local /中使用'make altinstall'将它安装在python2.4旁边。 我已经使用这个网站来设置我的apache conf文件:http://mydjangoblog.com/2009/03/30/django-mod_python-and-virtualenv/

我的问题是:有没有办法指定它(mod_python可能)应该使用python2.6而不是python2.4? 如果使用mod_python无法在一个apache中运行2个python版本,是否可以使用mod_wsgi?或者是否可以在一个apache安装中使用另一个站点使用mod_python和我使用mod_wsgi?

2 个答案:

答案 0 :(得分:4)

不,你不能这样做。 mod_python是使用特定的Python版本预编译的。如果你想改变那个版本,你必须重新编译mod_python - 如果你这样做,你也可以安装mod_wsgi。

可以使用mod_wsgi,因为它没有将解释器嵌入到Apache本身,所以它不关心你使用的是什么版本。让virtualenv使用mod_wsgi非常容易 - 你只需要激活.wsgi脚本中的virtualenv:

activate_this = os.path.join(path_to_my_site, "bin/activate_this.py")
execfile(activate_this, dict(__file__=activate_this))

答案 1 :(得分:1)

您也可以在不同的端口上使用runwsgiserver运行django项目,然后使用带反向代理的apache。

像这样:

source your_env/bin/activate
python manage.py runwsgiserver host=localhost port=8123

和apache上的反向代理:

<VirtualHost *:80>
    ServerName sitename.com
    ServerAlias www.sitename.com

ProxyRequests Off

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

ProxyPass / http://localhost:8123/
ProxyPassReverse / http://localhost:8123/

</VirtualHost>