0

我的问题基于下面链接的问题。我有完全一样的问题。但是建议的修复方法对我不起作用。

为什么我的 Django 安装提供了一个空的 HTTP 响应?

下面是我已经尝试过的项目列表。

  1. 删除 /etc/apache2/mods-enabled /etc/apache2/mods-available 目录中的 mod_python 加载文件
  2. 删除 /etc/apache2/mods-enabled 和 /etc/apache2/mods-available 目录中的 PHP4_Load 文件
  3. 在 /etc/apache2/mods-enabled、/etc/apache2/mods-available 和 etc/apache2 目录中查找“mod_python”、“python_module”,但没有找到更多引用。

  4. 在 django.wsgi 文件中测试了“Hello world”示例,它工作正常。

  5. 检查 apache 错误日志。输出如下。没有错误,并且似乎创建了一个解释器。

[2013 年 8 月 5 日星期一 15:32:31] [info] mod_wsgi (pid=9246):创建解释器“www.example.com|”。

  1. Ran apache2ctl -M 结果如下。
    • 冉加载模块:
    • 核心模块(静态)
    • log_config_module(静态)
    • logio_module(静态)
    • mpm_prefork_module(静态)
    • http_module(静态)
    • so_module(静态)
    • 别名模块(共享)
    • auth_basic_module(共享)
    • authn_file_module(共享)
    • authz_default_module(共享)
    • authz_groupfile_module(共享)
    • authz_host_module(共享)
    • authz_user_module(共享)
    • 自动索引模块(共享)
    • deflate_module(共享)
    • dir_module(共享)
    • env_module(共享)
    • mime_module(共享)
    • 协商模块(共享)
    • reqtimeout_module(共享)
    • setenvif_module(共享)
    • status_module(共享)
    • wsgi_module(共享)
    • 语法OK

我仍然收到空白页响应(除非启用了 hello world)。

对此还有什么建议吗?我可以在其他任何地方寻找 mod_python 加载吗?

django.wsgi 文件

#/usr/bin/python

import os
import sys
import django.core.handlers.wsgi


paths = ('/var/www/example.com/django/mysite',)
for path in paths:
    if path not in sys.path:
            sys.path.append(path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

application = django.core.handlers.wsgi.WSGIHandler()

django.wsgi hello world 示例(启用时)

def application(environ, start_response):
   status='200 OK'
   output='Hello Yall'
   print >> environ['wsgi.errors'], "application debug #1"

response_headers = [('Content-type', 'text/plain'),
                    ('Content-Length', str(len(output)))]

   if environ['wsgi.url_scheme'] == 'https':
         environ['HTTPS'] = 'on'

   start_response(status, response_headers)
   print >> environ['wsgi.errors'], "application debug #2"

   return [output]

阿帕奇文件

<VirtualHost *:80>
        ServerName example.com
        ServerAlias example.com
        ServerAlias example.com
        ServerAdmin example@example.com


       DocumentRoot /var/www/example.com
       <Directory /var/www/example.com>
        Order allow,deny
        Allow from all
       </Directory>

       WSGIScriptAlias / /var/www/example.com/django/mysite/apache/django.wsgi
       <Directory /var/www/example.com/django/mysite/apache>
           Order allow,deny
           Allow from all
       </Directory>
</VirtualHost>
4

1 回答 1

0

放:

WSGIApplicationGroup %{GLOBAL}

在您的 Apache 配置中。

这将解决 Python 中的第三方扩展模块无法与 Python 子解释器一起使用并且可能崩溃的问题。

如果这没有帮助,您可能遇到了导致崩溃的共享库冲突问题。

官方 mod_wsgi 文档中描述了这两个问题。因此,请查看mod_wsgi 文档中的常见问题页面以获取更多链接。

于 2013-08-06T08:30:38.900 回答