我正在使用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
成为该文件的所有者,但这也无效。
我该如何解决这个问题?
答案 0 :(得分:1)
您在服务器上没有足够的权限来创建日志文件。 СonfigureSSH并使用CHMOD更改文件夹
的权限配置Elastic Beanstalk应用程序(用于SSH)的环境 - enter link description here
答案 1 :(得分:0)
对于OP来说有点晚,但这对其他人可能有用:
如果您致电例如django-admin.py migrate
.ebextensions
中的container_commands
或其他django代码将导致使用用户root
和组root
创建日志文件。
在这种情况下,您可能需要在所有django调用(在.ebextensions
中)之后 更改文件权限,或者只是删除日志文件,如详细说明here。