安装 mod_wsgi 后 XAMPP Apache 不工作

Posted

技术标签:

【中文标题】安装 mod_wsgi 后 XAMPP Apache 不工作【英文标题】:XAMPP Apache not working after installing mod_wsgi 【发布时间】:2017-07-21 15:45:10 【问题描述】:

美好的一天。 我目前正在尝试使用 XAMPP Apache 在本地托管我的 Django 网站。我遵循了几个教程,但其中一个是有效的。我想知道您能否告诉我我错过或做错了什么步骤。以下是我的 Django 开发网站上已安装软件包的规格:

Python = 2.7.12,32 位 Apache = 2.4,32 位 Visual C++ 版本 9 操作系统:Windows 7 64 位

这是我遵循的程序:

    从https://code.google.com/archive/p/modwsgi/downloads 下载 mod_wsgi。我已经尝试过 [mod_wsgi-py26-vc9.so、mod_wsgi-py27-vc9.so、mod_wsgi-win32-ap22py27-3.3.so 和 mod] **但似乎都不起作用。

    将 mod_wsgi 文件重命名为 mod_wsgi.so 并保存到 C:/xampp/apache/modules

    运行 xampp 并通过添加编辑 apache httpd.conf 文件

    LoadModule wsgi_module modules/mod_wsgi.so
    

我也试过了

    LoadModule mod_wsgi modules/mod_wsgi.so

但仍然有相同的结果。 XAMPP 不显示任何错误,但即使在重新启动 XAMPP 和机器本身之后也不运行 Apache。我也尝试以管理员权限运行该应用程序,但它仍然无法正常工作。除了 Apache,其他 XAMPP 模块都在工作。

【问题讨论】:

不要使用该站点的任何内容,它是旧的东西,但由于 Google 不允许,因此无法删除。阅读***.com/a/42307082/128141 中的说明并自己构建它。您可能需要将MOD_WSGI_APACHE_ROOTDIR 设置为C:/xampp/apache。您仍然可以使用 Python 2.7。不过,我至少会推荐 Python 3.5。 您好,先生!您好已按照您建议的步骤安装了 mod_wsgi。 mod_wsgi-express 模块配置在 Apache 中为 LoadModule c:/python27/lib/site-packages/mod_wsgi/server/mod_wsgiNone 生成了一个路径,我已经在我的 httpd.conf 中添加了,重新启动了我的 Apache 但它仍然没有工作。 如果该行字面上是这样出来的,那么它与您正在使用的旧 Python 版本不能正常工作。目录c:/python27/lib/site-packages/mod_wsgi/server/mod_wsgi 中的文件的名称是什么。应该有一个以mod_wsgi 开头并以.pyd 结尾的文件。它是该文件的路径,应该是LoadModule 的参数。我不确定为什么它会为那个旧的 Python 版本输出一个字典表示。它应该只是文件路径的单个参数,没有大括号等。 我尝试使用easy_install 再次安装它。它在站点包中生成了 mod_wsgi-4.5.14-py2.7-win32.egg 目录。目录里面是 EGG-INFO 和 mod-wsgi 目录,然后在 mod_wsgi/server 里面我可以找到 mod_wsgi.pyd。当我运行 mod_wsgi-express module-config 时,它会打印: LoadModule wsgi_module "c:/python27/lib/site-packages/mod_wsgi-4.5.14-py2.7-win32.egg/mod_wsgi/server/mod_wsgiNone" WSGIPythonHome "c :/python27" 我已经在我的 http.conf 中复制了 Loadmodule 行,重新启动了我的 Apache,但它仍然无法正常工作。 目录中是否有扩展名为.pyd.pyo.so的文件? 【参考方案1】:

我已经通过在the author's GitHub account 下载二进制文件并构建我自己的二进制文件解决了这个问题。为此,我需要解压下载的 zip 文件并打开 win32 文件夹并阅读 README.rst 以获取说明。

说明摘录:

    了解您正在使用的 windows 和 python 版本(在我的例子中是 Windows 7 32 位和 Python 2.7) 安装适合您的 Python 版本的 Microsoft C/C++ 编译器: Python 2.6 - VC9 Python 2.7 - VC9 Python 3.3 - VC10 Python 3.4 - VC10

    启动 Visual C++ 命令提示符并:

    导航回解压的 mod_wsgi 文件,找到适合您的 Apache 和 Python 组合的 makefile(在我的例子中为ap22py27-win32-VC9.mk)。如果您不确定您的 Apache 版本,请阅读 XAMPP 或直接导航到 WAMP 的 localhost。

    编辑 .mk 文件并为 APACHE_ROOTDIR 和 PYTHON_ROOTDIR 定义正确的路径。示例:

    APACHE_ROOTDIR = C:\xampp\apache

    PYTHON_ROOTDIR = C:\Python27

    运行nmake -f apXYpyXY-winNN-VC?.mk install。在每个中替换“XY” 正在使用的 Apache 和 Python 版本的情况。替换“NN” 用“32”或“64”替换“?”带有“9”或“10”。示例:nmake -f ap22py27-win32-VC9.mk install。该行为您的平台构建 mod_wsgi 并将其安装到您的 Apache 安装的模块目录中

    在您的 WAMP/XAMPP http.conf 中添加以下行:LoadModule wsgi_module modules/mod_wsgi.so

    WSGIPythonHome "C:/Python27"

    WSGIPythonPath "ProjectPath"

    WSGIApplicationGroup "%GLOBAL"

    WSGIPassAuthorization "On"

    重新启动 Apache 或计算机,一切顺利。

注意:您无需在已安装的 python 应用程序中添加 mod_wsgi,因为它已经安装在您的 Apache 服务器中

【讨论】:

win32目录下的东西已经过时了,请不要使用。 pip install 方法是更好的方法,也是现在在 Windows 上以任何方式支持的唯一方法。问题是对于某些人来说mod_wsgi-express module-config 的输出是错误的。找出pyd 文件的正确路径并使用它。可能只是将None 更改为.pyd。本来希望你坚持整理出来,使用 mod_wsgi 邮件列表进行讨论。在需要讨论的情况下,*** 是帮助解决这些问题的最糟糕的地方。 猜测仍然存在问题的原因是需要强制加载 Python DLL。最近的mod_wsgi-express module-config 将产生一个LoadFile 指令来做到这一点。 谢谢,先生。我在 3 个月前使用这种方法安装了 mod_wsgi,到目前为止它仍然可以正常工作。 3 个月前执行 pip install 结果到一个空文件(在 Lib/site-packages 中生成一个空目录)可能是因为我使用的是旧版本的 Python(v2.4)。我只是发布了这个,以防这种方法也适用于其他人。 你确定你的意思是 Python 2.4?绝对不能保证会奏效。甚至可以使用 Python 2.6 也会很幸运。只有 2.7 或更高版本还可以。 对不起。我的意思是 2.7 先生。

以上是关于安装 mod_wsgi 后 XAMPP Apache 不工作的主要内容,如果未能解决你的问题,请参考以下文章

在 OSX Lion 上将 mod_wsgi 安装到 XAMPP

如何在从 xampp 包安装的 apache 服务器上安装 mod_wsgi?

如何在 Ubuntu 上将 mod_wsgi 安装到 xampp 服务器?遇到 libtool 错误

XAMPP + mod_wsgi + python Windows 7

使用 mod_wsgi 在 Windows XAMPP 中设置 Python 路径

我在哪里可以获得 apache2/module 的 mod_wsgi.so 文件?