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