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

发布于 2024-09-14 21:05:15 字数 629 浏览 8 评论 0原文

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

服务器上默认的python安装是python2.4,服务器上的其他一些网站使用它。因为我的项目是基于 python2.6 构建的,所以我使用“make altinstall”将其安装在 /usr/local/ 中的 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 的另一个站点?

I would like to run a Django project on a server using virtualenv in Apache using mod_python. Now I know that the recommended apache module to use is mod_wsgi, but I don't want to install that for now.

The default python installation on the server is python2.4, which is used by some other website on the server. Because my project was built on python2.6 I installed it next to python2.4 in /usr/local/ using 'make altinstall'.
I've used this website to setup my apache conf file: http://mydjangoblog.com/2009/03/30/django-mod_python-and-virtualenv/.

My question is: is there a way to specify that it (mod_python probably) should use python2.6 instead of python2.4?
If there is no way to run 2 python versions in one apache using mod_python, would it be possible using mod_wsgi? Or would it be possible in one apache installation with the other site using mod_python and me using mod_wsgi?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

素罗衫 2024-09-21 21:05:15

不,你不能这样做。 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))

No, you cannot do this. mod_python is pre-compiled with a particular Python version. If you wanted to change that version, you'd have to re-compile mod_python - and if you're doing that, you might as well install mod_wsgi.

It is possible with mod_wsgi, as that doesn't embed an interpreter into Apache itself, so it doesn't care what version you use. It's quite easy to get virtualenv working with mod_wsgi - you just need to activate the virtualenv inside your .wsgi script:

activate_this = os.path.join(path_to_my_site, "bin/activate_this.py")
execfile(activate_this, dict(__file__=activate_this))
英雄似剑 2024-09-21 21:05:15

您还可以在不同端口上使用 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>

You could also run the django project with a runwsgiserver on a different port and then use apache with a reverse proxy.

like so:

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

and the reverse proxy on 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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文