【问题标题】:WSGI App not found - 404未找到 WSGI 应用程序 - 404
【发布时间】:2012-05-18 02:07:36
【问题描述】:

遵循本指南:

http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide

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

  • 创建了一个用户 /home/wsgtest(我知道我们不应该这样做,但这只是为了测试)。
  • 将用户添加到组 www-data,这是 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>
    

(文件属于root:root)

  • 启用网站:

    ls -la /etc/apache2/sites-enabled/
    (..)
    lrwxrwxrwx 1 root root   35 May  9 15:29 application.conf -> ../sites-available/application.conf
    
  • 重启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
    
  • 重新启动 apache 并尝试再次导航,没有任何变化。

  • 尝试使用 lynx 和 localhost,没有任何变化。

  • 在 apache2 中启用日志信息级别。 /var/log/apache2 访问日志告诉我该请求以“404 503”回答, 这是来自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 ''.
    

“other_vhosts_access.log”为空。

对我来说,请求似乎永远不会到达 wsgi 应用程序或者没有以某种方式路由...... 谁能帮我找出问题所在?

【问题讨论】:

  • 在 Apache 配置中添加语法错误,例如 'xxx' 单独一行,然后尝试重新启动。查看 Apache 是否抱怨语法错误。这将确认正在读取的文件。然后观看code.google.com/p/modwsgi/wiki/…,因为应该记录了 Apache 错误消息,说明 404 发生的原因。该演示文稿中有示例。
  • 感谢 Graham 的帮助,将来可能会派上用场。

标签: python apache2 mod-wsgi wsgi


【解决方案1】:

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

http://webpython.codepoint.net/wsgi_application_interface

【讨论】:

  • 感谢您的回复。我的 /home/wsgtest/application.wsgi 文件中有以下内容: def application(environ, start_response): status = '200 OK' output = 'Hello World!' response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))] start_response(status, response_headers) return [output]
  • 考虑通过写完整的句子来改进你的答案。
【解决方案2】:

哦,不。我确实检查了所有内容 3 或 4 次,但仍然有一个错字。 正如您在 apache2.conf 编辑 (wsgitetst) 中的 WSGIScriptAlias 声明中看到的那样。 包含配置仍然不起作用,但没关系。

【讨论】:

    猜你喜欢
    • 2014-10-31
    • 1970-01-01
    • 2014-05-21
    • 2019-12-10
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多