我正在使用Elastic Beanstalk在AWS上部署一个基于Django/Python的web服务。我正在使用Django的日志功能来记录网站使用和相关数据。虽然这在本地测试中工作得很好,但我无法让它与Beanstalk一起工作。
我登录settings.py
的代码是:
# Django Logging
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
'datefmt' : "%d/%b/%Y %H:%M:%S"
},
'simple': {
'format': '%(levelname)s %(message)s'
},
},
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': 'spareguru.log',
'formatter': 'verbose'
},
},
'loggers': {
'django': {
'handlers':['file'],
'propagate': True,
'level':'DEBUG',
},
'customer': {
'handlers': ['file'],
'level': 'DEBUG',
},
}
}
部署到Beanstalk时得到的错误是:
ValueError: Unable to configure handler 'file': [Errno 13] Permission denied: '/opt/python/bundle/3/app/spareguru.log'
我还尝试使用.ebextensions
创建一个文件,并使wsgi
为该文件的所有者,但这也不起作用。
我该如何解决这个问题?
您在服务器上没有创建日志文件的足够权限。Сonfigure SSH和使用CHMOD修改目录
权限配置您的Elastic Beanstalk应用程序的环境(用于SSH) -在这里输入链接描述
对于OP来说有点晚了,但这可能对其他人有用:
如果你在.ebextensions
container_commands
中调用django-admin.py migrate
,或者其他django代码,这将导致日志文件以root
用户和root
组创建(除非该文件已经存在)。
在这种情况下,你可能需要在所有django调用完成后(在.ebextensions
中)更改文件权限,或者只是删除日志文件,在这里详细解释