Apache/Windows中找不到mod_wsgi

4

我的apache在Windows上找不到mod_wsgi。我使用的是apache 2.2,使用默认的httpd.conf启动服务器没有问题。

我将mod_wsgi.so放入了apache的模块目录(C:\ Program Files \ Apache Software Foundation \ Apache2.2 \ modules),并为所有用户设置了读取/执行权限。我在默认的httpd.conf中添加了以下行:

LoadModule wsgi_module modules/mod_wsgi.so

当我尝试启动apache时,出现以下错误。有人有什么想法/建议吗?

httpd.exe:语法错误位于 C:/Program Files / Apache Software Foundation / Apache2.2 / conf / httpd.conf的第129行: 无法将C:/Program Files / Apache Software Foundation / Apache2.2 / modules / mod_wsgi.so 加载到服务器中:找不到指定的模块。

[Tue Nov 23 17:41:55 2010] [warn] (OS 995) I/O操作已中止 因为线程退出或应用程序请求。 : winnt_accept: 异步AcceptEx失败。

[Tue Nov 23 17:41:56 2010] [notice] Child 7384:释放了启动互斥锁

5个回答

7

您将mod_wsgi模块文件的确切名称放在了modules目录中。您是否将其从下载的内容中重命名?您是否确保没有在名称中添加额外的.so,以便得到mod_wsgi.so.so?如果是这样,Windows可能会隐藏其中一个扩展名。


文件权限设置,使得Apache服务运行的用户无法读取该文件。 - Graham Dumpleton
我已经将其他模块的权限(可以正确加载)复制到mod_wsgi中,但仍然显示相同的错误。 - kefeizhou
3
Python是否安装在所有用户而不仅仅是你自己的账户中? - Graham Dumpleton
@kefeizhou,我和你遇到了同样的问题,我的问题是ALLUSERS=1应该放在哪里? - Jack Zhang
遇到了同样的问题:Python 没有为所有用户安装。 @GrahamDumpleton: 你能把这个加到你上面的答案里吗?有些人(包括我)第一次不会看评论。 - floqqi
显示剩余3条评论

6

另一个可能性是在64位机器上,Apache 2.2被安装为32位,而Python被安装为64位。我曾经遇到过这样的情况,使用python mod_wsgi和旧版mod_python应用程序时会出错。如果您正在运行32位Apache,则它只喜欢找到32位Python,无论版本如何。


0

请查看此页面以获取简单的解决方案。您的Apache很可能是在64位Windows上安装的32位版本,或者出现了文件名错误。要验证文件名是否正确并带有所述扩展名,请在任何资源管理器窗口中单击“工具”菜单,然后单击“文件夹选项”,接着在“查看”选项卡中取消选中“隐藏已知文件类型的扩展名”,最后点击[应用]或[确定]。然后,在确认mod_wsgi.so之后,您可以继续进行。


0

环境:python3.8.0 Apache2.4.41 mod_wsgi4.7.1 我已经在全局Python环境中安装了mod_wsgi,以下是命令行输出的一些信息(我的Python主目录是E:\Program Files\python3.8):

正在将mod_wsgi-4.7.1-py3.8-win-amd64.egg提取到e:\program files\python3.8\lib\site-packages 将mod-wsgi 4.7.1添加到easy-install.pth文件中 正在将mod_wsgi-express-script.py脚本安装到E:\Program Files\Python3.8\Scripts 正在将mod_wsgi-express.exe脚本安装到E:\Program Files\Python3.8\Scripts

因此,在目录E:\Program Files\Python3.8\Scripts中有一个可执行文件mod_wsgi-express.exe,您可以在命令行中运行以下命令:

mod_wsgi-express module-config

我的输出结果是:

加载文件 "E:/Program Files/Python3.8/python3.8.dll" 加载模块 wsgi_module "E:/Program Files/Python3.8/lib/site-packages/mod_wsgi-4.7.1-py3.8-win-amd64.egg/mod_wsgi/server/mod_wsgi.cp38-win_amd64.pyd" WSGIPythonHome "E:/Program Files/Python3.8"

将输出复制到您的 httpd.conf 文件中 该过程参考 https://github.com/GrahamDumpleton/mod_wsgi/blob/develop/win32/README.rst 这是我第一次回答问题,我的母语不是英语,希望我能帮到您。


0

尝试使用

LoadFile "c:/yourPythonPath/python**.dll"

** => 您的Python版本

在apache.config上


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接