我想使用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?
答案 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>