我正在尝试将django rest app部署到AWS Elastic Beanstalk。我按照this教程,在settings.py中配置了DATABASES,如下面的
if 'RDS_DB_NAME' in os.environ:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': os.environ['RDS_DB_NAME'],
'USER': os.environ['RDS_USERNAME'],
'PASSWORD': os.environ['RDS_PASSWORD'],
'HOST': os.environ['RDS_HOSTNAME'],
'PORT': os.environ['RDS_PORT'],
}
}
else:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DB_NAME',
'USER': 'USER_NAME',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '3306',
}
}
我将以下代码添加到.ebextensions目录,
option_settings:
"aws:elasticbeanstalk:application:environment":
DJANGO_SETTINGS_MODULE: "myApp.settings"
"PYTHONPATH": "./src"
"ALLOWED_HOSTS": ".elasticbeanstalk.com"
"aws:elasticbeanstalk:container:python":
WSGIPath: [WSGI_PATH]
NumProcesses: 3
NumThreads: 20
"aws:elasticbeanstalk:container:python:staticfiles":
"/static/": "www/static/"
container_commands:
01_migrate:
command: "source /opt/python/run/venv/bin/activate && python campusBackend/manage.py migrate --noinput"
leader_only: true
但是,当我尝试部署时,它会给我错误
django.db.utils.OperationalError:(2002,"无法连接到本地MySQL 服务器通过socket' /var/lib/mysql/mysql.sock' (2)&#34)。 .ebextensions / 02_python.config中的container_command 01_migrate失败。
我真的很抱怨这一点,我不知道如何解决这个问题。
编辑:我正在使用以下RDS的入站/出站规则