首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mod_wsgi:异常处理WSGI脚本(django部署)

mod_wsgi:异常处理WSGI脚本(django部署)
EN

Stack Overflow用户
提问于 2018-03-15 13:40:34
回答 2查看 9.1K关注 0票数 4

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

Apache虚拟主机配置

代码语言:javascript
复制
<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文件

代码语言:javascript
复制
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

代码语言:javascript
复制
import os
from django.core.wsgi import get_wsgi_application

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

application = get_wsgi_application()

--这是项目树:

代码语言:javascript
复制
project
|- backend
|  |- api (django app)
|  |- backend
|     |- ...
|     |- settings.py
|     |- wsgi.py
|-- myenv (virtualenv)

--这是我在尝试加载web:时一直得到的错误日志。

代码语言:javascript
复制
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'

我已经遵循了每一个教程,尝试了大量的配置,但仍然得到相同的错误。

我在虚拟环境中使用python3.5.2Apache2.4.18

我已经通过mod_wsgi安装了pip3。

有人能帮我把这个告诉我我做错了什么吗?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-17 13:17:15

我解决了这个问题,修改了wsgi.py文件,添加了下面的行:

代码语言:javascript
复制
import sys

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

我不知道这是否是正确的答案,但实际上它适用于这个解决办法。

票数 4
EN

Stack Overflow用户

发布于 2018-03-15 17:25:07

wsgi.py中的这一行

代码语言:javascript
复制
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "backend.settings")

backend.settings中没有project/backend/backend。它试图找到第三个后端文件夹,所以从该行中删除backend

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49300999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档