【问题标题】:500 Internal Server Error in production - Django500 生产中的内部服务器错误 - Django
【发布时间】:2019-11-29 08:53:15
【问题描述】:

我是 django 的新手,我正处于项目的部署阶段。但完成所有设置后,它显示 500 内部服务器错误,并且 apache2 错误日志显示 ImportError: No module named 'backend'

我尝试编辑 wsgi.py,因为我认为这是给出此错误的那个

这是我的 wsgi.py 文件的内容

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings.dev')

application = get_wsgi_application()

settings/dev.py

DEBUG = True
ALLOWED_HOSTS = ['my_ip_address']
WSGI_APPLICATION = 'backend.wsgi.application'

manage.py

import os
import sys

if __name__ == '__main__':
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings.dev')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)

目录结构:

atms
 --backend
       --wsgi.py
       --urls.py
       --settings
            --dev.py
 --manage.py

点冻结:

cairocffi==0.9.0
CairoSVG==2.2.1
cffi==1.11.5
cssselect2==0.2.1
defusedxml==0.5.0
Django==2.1.5
django-countries==5.3.2
django-weasyprint==0.5.4
djangorestframework==3.9.1
gunicorn==19.9.0
html5lib==1.0.1
Pillow==5.4.1
pycparser==2.19
Pyphen==0.9.5
pytz==2018.9
six==1.12.0
tinycss2==0.6.1
WeasyPrint==44
webencodings==0.5.1
whitenoise==4.0

/etc/apache2/sites-avalible 中的 atms.conf

        Alias /static /home/atms/atms/public/static
        <Directory /home/atms/atms/public/static>
                Require all granted
        </Directory>

        Alias /media /home/atms/atms/media
        <Directory /home/atms/atms/media>
                Require all granted
        </Directory>

        <Directory /home/atms/atms/backend>
                <Files wsgi.py>
                        Require all granted
                </Files>
        </Directory>

        WSGIScriptAlias / /home/atms/atms/backend/wsgi.py
        WSGIDaemonProcess django_app python-path=/home/atms/atms/backend python-home=/home/atms/venv
        WSGIProcessGroup django_app

错误日志显示

ImportError: No module named 'backend'

【问题讨论】:

  • 您能否发布您的 settings.py 也有问题?
  • 事情看起来不错,你能发布你的 manage.py 和目录结构吗?
  • 你在哪里部署它?
  • 在 VPS(Apache/2.4.18 (Ubuntu) 服务器)中
  • 你能检查一下服务器上是否安装了django并告诉我吗?

标签: django wsgi production django-wsgi


【解决方案1】:

您已将backend 直接放在您的python 路径上,这意味着它本身不是可导入的名称。你应该把父目录放在那里:

WSGIDaemonProcess django_app python-path=/home/atms/atms python-home=/home/atms/venv

【讨论】:

  • 非常感谢! @daniel,现在我可以安然入睡了 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-25
  • 2013-09-04
  • 2015-02-07
  • 2020-06-03
  • 1970-01-01
  • 2022-11-26
  • 2015-03-05
相关资源
最近更新 更多