【问题标题】:Apache2 mod_wsgi, 500 Internal Server ErrorApache2 mod_wsgi,500 内部服务器错误
【发布时间】:2011-08-08 11:50:22
【问题描述】:

我用 Apache2 设置了 django App,

1) 虚拟主机:

<VirtualHost *:80>
    ServerAdmin webadmin@publisy.com
    ServerName alpha101.publisy.com
    DocumentRoot /var/www/mysite

    WSGIScriptAlias / /usr/local/django/mysite/apache/django.wsgi
    Alias /static/ /var/www/mysite/media/static/
    <Directory /var/www/mysite/media/static>
        Order deny,allow
        Allow from all
    </Directory>

    Alias /media/ /var/www/mysite/media/
    <Directory /var/www/mysite/media>
        Order deny,allow
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined

</VirtualHost>

2) wsgi 脚本(位于 /usr/local/django/mysite/apache/django.wsgi)

import os, sys
sys.path.append('/usr/local/django')
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

import django.core.handlers.wsgi

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

谁能指出哪里出了问题?

【问题讨论】:

  • 你能检查一下 apache 错误日志 (/var/log/apache2/error.log) 中写的内容吗?
  • [Tue Apr 19 09:35:23 2011] [error] Exception KeyError: KeyError(-1218622832,) in 忽略 [Tue Apr 19 09:35:24 2011] [notice] 捕获 SIGTERM,正在关闭 [Tue Apr 19 09:35:25 2011] [notice] Apache/2.2.14 (Ubuntu) PHP/5.3.2 -1ubuntu4 配置了 Suhosin-Patch mod_wsgi/2.8 Python/2.6.5 -- 恢复正常操作
  • 这个 KeyError 有点正常。日志中没有其他内容?
  • 您能否检查权限是否设置正确,以便 apache2(或 apache 用户)能够访问您的 wsgi 脚本?
  • 其他日志:[Tue Apr 19 05:16:17 2011] [error] [client 124.41.237.129] mod_wsgi (pid=24832): 处理 WSGI 脚本 '/usr/local/django 时发生异常/publisy/apache/django.wsgi'。 [2011 年 4 月 19 日星期二 05:16:17] [错误] [客户端 124.41.237.129] 回溯(最近一次通话最后):......[2011 年 4 月 19 日星期二 05:16:17] [错误] [客户端124.41.237.129] TemplateSyntaxError:渲染时捕获异常:没有名为目标的模块

标签: django apache2 mod-wsgi


【解决方案1】:

好像有点小问题。看起来您的“站点”目录是 /var/www/mysite。

将此添加到 django.wsgi 中的 python 路径。

sys.path.append('/var/www')
sys.path.append('/var/www/mysite')

事实上你发布的错误

TemplateSyntaxError: Caught an exception while rendering: No module named destinations 

似乎 wsgi 找不到模块目的地。将目录路径添加到 django.wsgi 中的 python 路径,它应该可以工作。

【讨论】:

    【解决方案2】:

    如果你有DEBUG=False 或者你的IP 地址不在INTERNAL_IPS 中,任何django 错误都会给你错误500,甚至像KeyError 这样的东西。通常,生产服务器在环境中存在差异,因此,即使在本地主机上一切正常,您也可能会在生产中发现一些问题。

    两种查看问题的方法:

    1. 只需将您的 ip 添加到 INTERNAL_IPS(获取您当前的 ip 地址)或将 DEBUG 设置为 true
    2. 查看 apache error.log 或您在 settings.py 中设置的电子邮件(错误默认通过电子邮件发送)

    另外,请记住,您必须在进行更改后重新启动服务器。

    祝你好运!

    【讨论】:

      【解决方案3】:
      Traceback Switch to copy-and-paste view
      
      /usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py in get_response
                      response = wrapped_callback(request, *callback_args, **callback_kwargs) ...
      ▶ Local vars
      /usr/local/lib/python2.7/dist-packages/django/contrib/admin/sites.py in wrapper
                  return self.admin_view(view, cacheable)(*args, **kwargs) ...
      ▶ Local vars
      /usr/local/lib/python2.7/dist-packages/django/utils/decorators.py in _wrapped_view
                      response = view_func(request, *args, **kwargs) ...
      ▶ Local vars
      /usr/local/lib/python2.7/dist-packages/django/views/decorators/cache.py in               _                       s    wrapped_view_func
          response = view_func(request, *args, **kwargs) ...
      ▶ Local vars
      /usr/local/lib/python2.7/dist-packages/django/contrib/admin/sites.py in inner
              return view(request, *args, **kwargs) ...
      ▶ Local vars
      /usr/local/lib/python2.7/dist-packages/django/views/decorators/cache.py in _         s        s     wrapped_view_func
          response = view_func(request, *args, **kwargs) ...
      ▶ Local vars
      /usr/local/lib/python2.7/dist-packages/django/contrib/admin/sites.py in index
                              model_dict['admin_url'] = reverse('admin:%s_%s_changelist' % info,     current_app=self.name) ...
      ▶ Local vars
      /usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py in reverse
                  app_list = resolver.app_dict[ns] ...
      ▶ Local vars
      /usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py in app_dict
              self._populate() ...
      ▶ Local vars
      /usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py in _populate
          for pattern in reversed(self.url_patterns): ...
      ▶ Local vars
      /usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py in url_patterns
              raise ImproperlyConfigured("The included urlconf %s doesn't have any patterns in it"         %      self.urlconf_name) ...
          ▶ Local vars
      

      【讨论】:

        猜你喜欢
        • 2019-11-25
        • 2016-08-31
        • 2015-09-30
        • 1970-01-01
        • 1970-01-01
        • 2023-02-23
        • 2017-07-15
        • 1970-01-01
        • 2018-06-07
        相关资源
        最近更新 更多