【问题标题】:mod_wsgi: Exception occurred processing WSGI script (django deployment)mod_wsgi:处理 WSGI 脚本时发生异常(django 部署)
【发布时间】:2018-03-15 13:40:34
【问题描述】:

我正在尝试使用以下 Apache 配置部署 django 项目:

Apache 虚拟主机配置

<Virtualhost *:80>
    DocumentRoot /var/www/project/backend
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    WSGIDaemonProcess backend python-home=/var/www/project/myenv python-path=/var/www/gestor_documental/backend

    WSGIProcessGroup backend
    WSGIScriptAlias / /var/www/project/backend/backend/wsgi.py process-group=backend
    Alias /static/ /var/www/project/backend/static/

    <Directory /var/www/project/backend>
            Require all granted
    </Directory>
</Virtualhost>

wsgi.load 文件

LoadModule wsgi_module "/var/www/project/myenv/lib/python3.5/site-packages/mod_wsgi/server/mod_wsgi-py35.cpython-35m-x86_64-linux-gnu.so"
WSGIPythonHome "/var/www/project/myenv"

wsgi.py是django默认自带的

wsgi.py

import os
from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "backend.settings")

application = get_wsgi_application()

这是项目树:

project
|- backend
|  |- api (django app)
|  |- backend
|     |- ...
|     |- settings.py
|     |- wsgi.py
|-- myenv (virtualenv)

这是我尝试加载网页时不断收到的错误日志:

mod_wsgi (pid=38953): Failed to exec Python script file '/var/www/project/backend/backend/wsgi.py'.
mod_wsgi (pid=38953): Exception occurred processing WSGI script '/var/www/project/backend/backend/wsgi.py'.
Traceback (most recent call last):
 File "/var/www/project/backend/backend/wsgi.py", line 16, in <module>
  application = get_wsgi_application()
 File "/var/www/project/myenv/lib/python3.5/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
  django.setup(set_prefix=False)
 File "/var/www/project/myenv/lib/python3.5/site-packages/django/__init__.py", line 22, in setup
  configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
 File "/var/www/project/myenv/lib/python3.5/site-packages/django/conf/__init__.py", line 53, in __getattr__
  self._setup(name)
 File "/var/www/project/myenv/lib/python3.5/site-packages/django/conf/__init__.py", line 41, in _setup
  self._wrapped = Settings(settings_module)
 File "/var/www/project/myenv/lib/python3.5/site-packages/django/conf/__init__.py", line 97, in __init__
  mod = importlib.import_module(self.SETTINGS_MODULE)
 File "/var/www/project/myenv/lib/python3.5/importlib/__init__.py", line 126, in import_module
  return _bootstrap._gcd_import(name[level:], package, level)
 File "<frozen importlib._bootstrap>", line 986, in _gcd_import
 File "<frozen importlib._bootstrap>", line 969, in _find_and_load
 File "<frozen importlib._bootstrap>", line 944, in _find_and_load_unlocked
 File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
 File "<frozen importlib._bootstrap>", line 986, in _gcd_import
 File "<frozen importlib._bootstrap>", line 969, in _find_and_load
 File "<frozen importlib._bootstrap>", line 956, in _find_and_load_unlocked
ImportError: No module named 'backend'

我已按照每个教程进行操作并尝试了大量配置,但仍然遇到相同的错误。

我在 virtualenv 和 Apache 2.4.18

中使用 python 3.5.2

我已经通过 pip3 安装了 mod_wsgi。

有人可以帮我解决这个问题并告诉我我做错了什么吗?

谢谢。

【问题讨论】:

  • 是否在您的文件中某处导入backend?后端只是一个文件夹还是一个文件?因为您尝试在某处导入模块 backend,但它找不到名为 backend 的模块。
  • 这很奇怪。 backend 是我项目文件夹的名称,我没有在任何地方导入它
  • 你也没有像在你的wsgi.py中那样导入它?
  • wsgi.py 是 django 默认自带的。我实际上不知道该文件的作用。我将编辑帖子并放置文件,以便您查看里面的内容。
  • Django 设置文件的完整路径是什么,即以backend/settings.py 结尾的路径? python-path 应该在该路径中包含该 backend 目录的父目录。

标签: django apache mod-wsgi


【解决方案1】:

这是wsgi.py中的这一行:

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "backend.settings")

project/backend/backend 中没有 backend.settings。 它正在尝试查找第三个后端文件夹,因此请从该行中删除 backend

【讨论】:

  • 你是对的,问题是它没有找到backend,但如果删除它,它说的是同样的,但只是settings。我发布了对我有用的解决方案,以防其他菜鸟和我一样迷路。感谢您的帮助!
  • 没问题 :) 很高兴我能提供帮助
【解决方案2】:

我解决了它更改wsgi.py 文件添加下一行:

import sys

sys.path.append('/var/www/project/backend')

我不知道这是否是正确的答案,但它确实适用于这种解决方法。

【讨论】:

    猜你喜欢
    • 2016-02-11
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多