Python 找不到WSGI应用程序-404

Python 找不到WSGI应用程序-404,python,apache2,mod-wsgi,wsgi,Python,Apache2,Mod Wsgi,Wsgi,遵循本指南: 我无法配置“Hello World”WSGI应用程序(我没有在docroot安装,也没有委托给守护进程) 在我的ubuntu上。Python版本是2.6.5。 我相信mod_wsgi安装正确。 以下是我所做的: 创建了一个user/home/wsgitest(我知道我们不应该这样做,但这只是为了测试) 将用户添加到组www数据中,这是apache2运行的基础: groups wsgitest wsgitest : wsgitest www-data 作为wsgitest,添加

遵循本指南:

我无法配置“Hello World”WSGI应用程序(我没有在docroot安装,也没有委托给守护进程) 在我的ubuntu上。Python版本是2.6.5。 我相信mod_wsgi安装正确。 以下是我所做的:

  • 创建了一个user/home/wsgitest(我知道我们不应该这样做,但这只是为了测试)
  • 将用户添加到组www数据中,这是apache2运行的基础:

    groups wsgitest
    wsgitest : wsgitest www-data
    
    作为wsgitest,添加了显式读取文件夹的权限:

    chmod -R g+rx wsgitest
    
  • 创建了一个WSGI应用程序脚本文件,其内容与指南中的内容完全相同:

    ls -la /home/wsgitest/
    (...)
    -rw-r--r-- 1 wsgitest wsgitest  277 May  7 17:11 application.wsgi
    
  • 已创建应用程序配置文件:

    cat /etc/apache2/sites-available/application.conf 
    <VirtualHost *:80>
      WSGIScriptAlias /application /home/wsgitest/application.wsgi
      <Directory /home/wsgitest>
        Order allow,deny
        Allow from all
      </Directory>
    </VirtualHost>
    
  • 重新启动apache2并转到以下地址:

    <ip-address>/application
    <ip-address>/application/
    
    /应用程序
    /应用/
    
这是404

  • 已禁用该站点,并将以下内容放在文件/etc/apache2/apache2.conf的底部:

    <Directory /home/wsgitest>
      Order allow,deny
      Allow from all
    </Directory>        
    WSGIScriptAlias /application /home/wsgitetst/application.wsgi
    
    
    命令允许,拒绝
    通融
    WSGIScriptAlias/application/home/wsgitetst/application.wsgi
    
  • 重新启动apache并尝试再次导航,没有更改

  • 尝试使用lynx和localhost,没有更改

  • 已在apache2中启用日志记录信息级别。/var/log/apache2访问日志告诉我,请求得到了“404503”的响应, 这来自error.log:

    [Wed May 09 15:39:28 2012] [info] mod_wsgi (pid=27914): Attach interpreter ''.
    (...) 
    [Wed May 09 15:39:32 2012] [error] [client <ip>] File does not exist: /var/www/application
    (...)
    [Wed May 09 15:39:28 2012] [info] mod_wsgi (pid=27914): Cleanup interpreter ''.
    
    [Wed May 09 15:39:28 2012][info]mod_wsgi(pid=27914):附加解释器“”。
    (...) 
    [Wed May 09 15:39:32 2012][error][client]文件不存在:/var/www/application
    (...)
    [Wed May 09 15:39:28 2012][info]mod_wsgi(pid=27914):清理解释器“”。
    
“other_vhosts_access.log”为空

在我看来,请求似乎从未到达wsgi应用程序,或者没有以某种方式路由。。。
有人能帮我确定问题吗?

在application.wsgi中必须是应用程序可调用对象(区分大小写)


哦,不。我确实检查了三四遍,但还是有一个打字错误。 正如您在apache2.conf编辑(wsgitetst)中的WSGIScriptAlias声明中所看到的那样。
include配置仍然无法工作,但没关系。

在Apache配置中添加一个语法错误,例如,在一行中单独添加“xxx”,然后尝试重新启动。查看Apache是否抱怨语法错误。这将确认正在读取的文件。然后观察,因为应该记录一条Apache错误消息,说明404发生的原因。该演示文稿中有一些示例。感谢您的帮助Graham,这可能在将来派上用场。感谢您的回复。我的/home/wsgitest/application.wsgi文件中确实有以下内容:def应用程序(环境,启动\响应):状态='200 OK'输出='Hello World!'响应标题=[('Content-type','text/plain'),('Content-Length',str(len(output))]开始响应(status,response_headers)返回[output]考虑通过写完整的句子来改进你的答案。
[Wed May 09 15:39:28 2012] [info] mod_wsgi (pid=27914): Attach interpreter ''.
(...) 
[Wed May 09 15:39:32 2012] [error] [client <ip>] File does not exist: /var/www/application
(...)
[Wed May 09 15:39:28 2012] [info] mod_wsgi (pid=27914): Cleanup interpreter ''.