Проблемы подключения Django Elastic Beanstalk к RDS MySQL
Я пытаюсь подключить мой Django Elastic Beanstalk к моему RDS MySQL. Мой Django работает с моим RDS MySQL через localhost, но при попытке загрузить мой Django на Elastic Beanstalk я получаю "failed to deploy application" и AWS показывает ошибки (ниже). Мой проект имеет mysqlclient в requirements.txt, как здесь:
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-rds.html
Согласно этой странице, этого должно быть достаточно. Я, конечно, пытался искать похожие вопросы, но пока безуспешно. Я заметил, что во многих вопросах говорится о необходимости создания файла packages.config внутри .ebextensions, я попробовал многие из этих предложений без успеха. В этом ли проблема? Почему об этом не упоминается на странице AWS?
× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [16 lines of output]
/bin/sh: mysql_config: command not found
/bin/sh: mariadb_config: command not found
/bin/sh: mysql_config: command not found
Traceback (most recent call last):
File "<string>", line 2, in <module>
File "<pip-setuptools-caller>", line 34, in <module>
File "/tmp/pip-install-r0dz9d2g/mysqlclient_f2b5c53e43a648c284b06f7af63d9855/setup.py", line 15, in <module>
metadata, options = get_config()
File "/tmp/pip-install-r0dz9d2g/mysqlclient_f2b5c53e43a648c284b06f7af63d9855/setup_posix.py", line 70, in get_config
libs = mysql_config("libs")
File "/tmp/pip-install-r0dz9d2g/mysqlclient_f2b5c53e43a648c284b06f7af63d9855/setup_posix.py", line 31, in mysql_config
raise OSError("{} not found".format(_mysql_config_path))
OSError: mysql_config not found
mysql_config --version
mariadb_config --version
mysql_config --libs
[end of output]
Ответ на свой собственный вопрос. Я спросил нечто подобное позже AWS Elastic Beanstalk RDS MacOS mysqlclient not working и получил помощь.
Ответ действительно заключался в файле packages.config с yum, устанавливающим необходимые файлы (проверьте ссылку выше). Что-то еще было не так в моем коде, но ошибки, которые я получал, были такими же, как и выше, даже если packages.config был настроен правильно. Я понял это, потому что попытался вернуть базу данных SQLite и загрузить ее в Elastic Beanstalk, и это не сработало. (Я не помню, какие ошибки я получил, извините, я был в стрессе, думаю, что снова ошибки "111: Connection refused")
Как я добился работоспособности, я удалил все свои конфигурационные файлы и начал заново с обычного готового проекта, а затем следовал руководствам (как я делал раньше): https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-django.html. https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-rds.html#python-rds-connect
Оттуда я добавил файл packages.config в папку .ebextensions со следующим кодом...
packages:
yum:
python3-devel: []
mariadb-devel: []
... как отмечено в моем другом вопросе, ссылка на который приведена выше, а также здесь: ошибка установки mysqlclient в AWS Elastic Beanstalk
Мне также понадобились gunicorn и Procfile, я уже решил эту проблему, но стоит упомянуть, если вы здесь из-за проблем с Elastic Beanstalk и RDS.
Я также не понимал, могу ли я использовать yum в файле packages.config, если у меня нет его на компьютере, тем более что я использую MacOS, а на MacOS не принято использовать yum. На этот вопрос был дан ответ в другом моем вопросе, ссылка на который приведена в начале этого ответа. Ответ заключается в том, что вам не нужен yum на вашем компьютере в этом случае, потому что yum используется в этом случае сервером Amazon Linux 2 из Elastic Beanstalk.