【问题标题】:Apache mod_wsgi 32-bit/64-bit Python compatibilityApache mod_wsgi 32 位/64 位 Python 兼容性
【发布时间】:2013-05-21 00:28:32
【问题描述】:

我使用 Zend Studio / Zend Server 来开发基于 PHP 的网站,但现在我正在学习 Python 课程,我想学习 Django。

我有一台 Windows 7 AMD-64 机器,并且正在使用 64 位 Python 2.6(课程需要 2.6 版),这部分工作正常。

我的问题是尝试将 mod_wsgi 添加到我的 Zend Server 的 32 位 Apache 安装中。我已经为 Python 2.6 下载了几个版本的 mod_wsgi 32 位 Windows 二进制文件,并将它们复制到 C:Program Files (x86)\Zend\Apache2\modules 目录,编辑 httpd.conf 并添加:

LoadModule wsgi_module modules/mod_wsgi.so

重启Apached2.2-Zend,然后在命令提示符下测试是否加载了mod_wsgi:

httpd -t -M

但是,mod_wsgi 没有显示在加载的模块列表中。

我最终认为这可能行不通,因为我无法将 64 位 Python 2.6 与 32 位 ZendServer Apache2.2 混合搭配。

所以这是我的问题的实质:

我能否安装 64 位版本的 Apache 2.2 并与 ZendServer Apache2.2 同时运行(但配置 64 位版本,使其不会在与我的 ZendSever Apache2.2 相同的端口上侦听) 所以我所有的本地 PHP 虚拟主机仍然可以工作吗?也许让 mod_wsgi 与这个 Apache 一起加载会更好?

或者,安装 32 位版本的 Python 会更好吗(可能是更高版本,如 Python 2.8,因为我的课程只需要 Python 2.6,而且我正试图让 Django 只为我自己的网络工作网站开发)?那会允许我的 ZendServer Apache2.2 加载 mod_wsgi 吗?此外,如果我的 Windows 7 机器上同时安装了这两种 Python,Apache 如何确定它应该使用哪个 Python 安装?

【问题讨论】:

  • 我只会安装 2.7.5 的 32 位版本并使用它。它会更容易使用,因为您不必弄乱 Apache 的两个版本。

标签: python django apache


【解决方案1】:

我能否安装 64 位版本的 Apache 2.2 并与 ZendServer Apache2.2 同时运行(但配置 64 位版本,使其不会在与我的 ZendSever Apache2.2 相同的端口上侦听)

是的,你可以。

您已经想到了最困难的问题:它无法侦听相同的端口。

一个相关的问题是,有些人的网络不允许他们与端口 8080 建立传出连接;如果你想处理这个问题,你需要设置你的 ZendServer 作为另一个服务器的转发代理。但仅此而已。

唯一的另一个问题是您需要确保您的两个 Apache 副本不会尝试共享相同的配置文件等(并且您可能也不希望它们都在您的 PATH 上)。


或者,安装 32 位版本的 Python 会更好(可能是更高版本,如 Python 2.8

没有 2.8,也永远不会。最后一个 2.x 版本是 2.7(尽管它继续得到错误修复,最高到 2.7.5)。如果你想要更高的东西,你必须去 3.x。如果您需要的一切都在 3.3 上运行(而 Django 1.5+ 可以),并且您愿意学习小的更改,那么您应该考虑这一点。但是,如果您想坚持您已经知道的内容,请获取 2.7.5。

这会让我的 ZendServer Apache2.2 加载 mod_wsgi 吗?

好吧,如果您对 Python 2.6 使用 mod_wsgi 并安装 Python 2.7 或 3.3... (假设“我已经为 Python 2.6 下载了多个版本的 mod_wsgi 32 位 Windows 二进制文件”)。

除此之外,是的。只要一切都正确构建和配置,它就会工作。 (我不知道你下载并安装了哪些特定的包,所以我不能保证它们是否会工作,当然。)

另外,如果我的 Windows 7 机器上同时安装了这两个 Python,Apache 如何确定它应该使用哪个 Python 安装?

这是可配置的。我相信默认设置是使用它首先在您的PATH 上找到的任何内容,或者在您的注册表设置中显示为“默认 python 2.x”的任何内容,正如PEP 397 中描述的 Python 命令行启动器所使用的那样. (当然,如果那个 Python 不是它所构建的那个 Python,它将无法启动。)

【讨论】:

  • mod_wsgi 二进制文件是为特定版本的 Python 编译的。如果 Python 安装是不同的版本,它将只使用(并且只能使用)它为其编译的版本。
  • @GrahamDumpleton:是的,考虑到他的问题(“我已经为 Python 2.6 下载了几个版本的 mod_wsgi 32 位 Windows 二进制文件”),我认为这对 OP 来说已经很明显了。但是,如果您认为我需要澄清这一点,我会对其进行编辑。
  • 我澄清了它,因为您的评论“这是可配置的”部分表明可以使 Apache/mod_wsgi 选择不同的 Python 版本。自从我发表评论以来,您似乎已经澄清了这一点。
  • 哇 - 谢谢大家的快速回复 - 我不知所措(以一种好的方式!)我之前在 stackoverflow 上找到了一堆答案,但这是我遇到的第一个问题问的勇气。 (Graham Dumpleton 的回应让我感到特别荣幸——这太酷了!)我将尝试配置 64 位版本的 Apache,所以我的机器上只安装了 1 个 Python。这可能需要我一段时间才能做到正确 - 所以一旦我取得进展或遇到另一个障碍,我会立即做出回应。
  • @StefanMusarra:最后一件事:如果您担心两个 Apache 安装会相互混淆(或者只是让您作为人类管理员感到困惑)。另一方面,这意味着您必须学习如何设置、管理、调试、优化等两个不同的服务器,所以您可能不想想要这样做。
猜你喜欢
  • 2023-03-30
  • 2010-10-21
  • 2013-10-21
  • 1970-01-01
  • 2013-03-12
  • 2019-08-19
  • 2016-02-28
  • 2012-10-26
  • 1970-01-01
相关资源
最近更新 更多