Apache WSGI 模块无法使用 net start apache2.4 启动,但可以使用 httpd.exe

问题描述 投票:0回答:1

我目前在 Windows 上的 Apache 服务器设置遇到问题。我已经能够使用 httpd.exe 成功运行 Apache,但是当我尝试使用

net start apache2.4
启动它时,该服务无法启动,并且我在事件查看器中收到错误(尽管没有相应的 Apache 错误日志)

系统详情

  • Apache 版本:Apache 2.4(64 位)
  • Python版本:Python 3.13
  • mod_wsgi 版本:5.0.1(64 位)
  • Django 应用程序路径:C:/webapp
  • WSGI模块路径:C:/Users/{me}/AppData/Local/Programs/Python/Python313/Lib/site-packages/mod_wsgi/server/mod_wsgi.cp313-win_amd64.pyd

我尝试过的事情

1。直接运行httpd.exe:

  • Apache 成功启动并按预期为我的 Django 应用程序提供服务。
  • 手动启动时 Django 应用程序或 WSGI 模块没有问题。

**2。跑步

httpd -t
**

  • 退货
    Syntax OK

3. Windows 事件查看器错误:

  • 当使用 net start apache2.4 启动 Apache 时,我在事件查看器中看到以下错误:
The Apache service named  reported the following error:
>>> httpd.exe: Syntax error on line 194 of C:/Apache24/conf/httpd.conf: 
Cannot load C:/Users/{me}/AppData/Local/Programs/Python/Python313/Lib/site-packages/mod_wsgi/server/mod_wsgi.cp313-win_amd64.pyd 
into server: The specified module could not be found.     .

4。已验证的文件路径:

  • 我已确认 mod_wsgi 文件存在于 httpd.conf 文件中指定的确切位置:
c:\Apache24\bin>dir "C:\Users\{me}\AppData\Local\Programs\Python\Python313\Lib\site-packages\mod_wsgi\server"
 Volume in drive C is Windows
 Volume Serial Number is 8205-BA06
 Directory of C:\Users\{me}\AppData\Local\Programs\Python\Python313\Lib\site-packages\mod_wsgi\server

10/23/2024  02:49 PM    <DIR>          .
10/23/2024  02:49 PM    <DIR>          ..
10/23/2024  02:49 PM             1,097 apxs_config.py
10/23/2024  02:49 PM             3,563 environ.py
10/23/2024  02:49 PM    <DIR>          management
10/23/2024  02:49 PM           134,656 mod_wsgi.cp313-win_amd64.pyd
10/23/2024  02:49 PM           138,014 __init__.py
10/23/2024  02:49 PM    <DIR>          __pycache__
               4 File(s)        277,330 bytes
               4 Dir(s)  56,747,614,208 bytes free

什么令人困惑

  • Apache 使用
    httpd.exe
    运行良好,但使用
    net start apache2.4
    时失败。
  • Apache 日志(错误日志或访问日志)中未记录任何错误。
  • mod_wsgi 模块在手动运行时似乎加载没有问题,但不是作为服务运行。

配置

  • httpd.conf(mod_wsgi 加载):
LoadModule wsgi_module "C:/Users/{me}/AppData/Local/Programs/Python/Python313/Lib/site-packages/mod_wsgi/server/mod_wsgi.cp313-win_amd64.pyd"
WSGIPythonHome "C:/Users/{me}/AppData/Local/Programs/Python/Python313"
WSGIPythonPath "C:/{my_webapp}"
  • 虚拟主机配置:
<VirtualHost *:80>
    ServerName .com
    ServerAlias www.{my_webapp}.com
    DocumentRoot "C:/{my_webapp}"

    WSGIScriptAlias / C:/{my_webapp}/{my_webapp}/wsgi.py
    WSGIApplicationGroup %{GLOBAL}
    LogLevel info wsgi:debug

    <Directory C:/{my_webapp}/{my_webapp}>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    Alias /static/ C:/{my_webapp}/static/
    <Directory C:/{my_webapp}/static>
        Require all granted
    </Directory>

    ErrorLog "C:/Apache24/logs/{my_webapp}_error.log"
    CustomLog "C:/Apache24/logs/{my_webapp}_access.log" common
</VirtualHost>

迄今为止采取的步骤

  1. 已验证 Apache 和 mod_wsgi 均为 64 位。
  2. 确认Python和mod_wsgi的路径正确。
  3. 成功运行 httpd.exe,确认手动设置有效。 检查了 Windows 事件查看器是否有错误,但没有看到 Apache 错误日志中记录的任何其他详细信息。

我的问题

为什么Apache可以通过httpd.exe运行,但使用net start apache2.4时却失败?我该如何进一步解决这个问题,特别是考虑到 Apache 中缺少日志?

相关帖子

任何帮助或建议将不胜感激!预先感谢。

python django windows apache
1个回答
0
投票

根据相关帖子中的最后一个链接。

奔跑

mod_wsgi-express module-config

替换我在 httpd.conf 中加载的内容以加载输出:

LoadFile "C:/Users/{me}/AppData/Local/Programs/Python/Python313/python313.dll"
LoadModule wsgi_module "C:/Users/{me}/AppData/Local/Programs/Python/Python313/Lib/site-packages/mod_wsgi/server/mod_wsgi.cp313-win_amd64.pyd"
WSGIPythonHome "C:/Users/{me}/AppData/Local/Programs/Python/Python313"
© www.soinside.com 2019 - 2024. All rights reserved.