【问题标题】:Target WSGI script wsgi.py' cannot be loaded as Python module目标 WSGI 脚本 wsgi.py' 不能作为 Python 模块加载
【发布时间】:2018-04-01 03:21:10
【问题描述】:

我正在尝试使用 AWS ElasticBeanstalk 扩展我的 django 项目,但出现错误,部署项目时不会出现该错误,但在扩展项目时出现此错误:

 ValueError: Unable to configure handler 'file_log': [Errno 13] Permission 
     denied: '/var/log/meatme/django.log'
 mod_wsgi (pid=4829): Target WSGI script 
    '/opt/python/current/app/meatme/meatme/wsgi.py' cannot be loaded as 
    Python module.
 mod_wsgi (pid=4829): Exception occurred processing WSGI script 
    '/opt/python/current/app/meatme/meatme/wsgi.py'.
 Traceback (most recent call last):
 File "/opt/python/current/app/meatme/meatme/wsgi.py", line 16, in <module>
     application = get_wsgi_application()
 File "/opt/python/run/venv/lib/python2.7/site-
     packages/django/core/wsgi.py", line 13, in get_wsgi_application
     django.setup(set_prefix=False)
 File "/opt/python/run/venv/lib/python2.7/site-packages/django/__init__.py", 
     line 22, in setup
     configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
 File "/opt/python/run/venv/lib/python2.7/site-
     packages/django/utils/log.py", line 75, in configure_logging
     logging_config_func(logging_settings)
 File "/usr/lib64/python2.7/logging/config.py", line 794, in dictConfig
     dictConfigClass(config).configure()
 File "/usr/lib64/python2.7/logging/config.py", line 576, in configure
     '%r: %s' % (name, e))

我有这个配置文件 .ebextensions:

commands:
  00_create_dir:
    command: mkdir -p /var/log/meatme
  01_change_permissions:
    command: chmod g+s /var/log/meatme
  02_change_owner:
    command: chown -R wsgi:wsgi /var/log/meatme

和 wsgi.py

import os

from django.core.wsgi import get_wsgi_application

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

application = get_wsgi_application()

当我执行 eb deploy 时,它运行良好,但是当我执行 eb clone 2(测试规模)时,新实例不起作用。

【问题讨论】:

  • 假设您在标记问题时指的是 mod_wsgi 而不是 uWSGI。问题标题中的错误消息看起来来自 mod_wsgi 而不是 uWSGI。

标签: python django amazon-elastic-beanstalk uwsgi wsgi


【解决方案1】:

在 mod_wsgi 下运行时,应避免使用单独的文件设置 Python 日志记录。相反,只需将其配置为将日志记录发送到控制台流。然后将在 Apache 错误日志中捕获这些消息。

用途:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['console'],
            'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),
        },
    },
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 2020-05-17
    • 1970-01-01
    • 2013-08-27
    • 2018-11-11
    • 2020-04-28
    相关资源
    最近更新 更多