我正在使用Elastic Beanstalk将Django项目部署到AWS上,但在迁移数据库时遇到了问题。
目前情况:我能够成功部署django项目,并通过mysubdomain.elasticbeanstalk.com加载页面。在需要进行数据库调用的页面之前,页面加载没有错误。但是当我进入这些页面时,就会收到类似于relation "accounts_user" does not exist LINE 1: SELECT COUNT(*) FROM "accounts_user"
的错误提示,因为我的数据库还没有被迁移。
我尝试过的:我尝试了许多不同的方法。幸运的是,有很多stackoverflow帖子和一些教程。不幸的是,它们似乎都在使用不同版本,而他们所建议的方法并不适用于我的项目。
很明显,我需要在.ebextensions/
文件夹中的foobar.config
文件中运行迁移。以下是我想要做的基本内容:
container_commands:
01_migrate:
command: "python manage.py migrate --noinput"
leader_only: true
在日志中,我看到发布后脚本尝试运行但失败了。我没有收到任何其他有关错误的信息,我只看到类似于“ERROR:01_migrate post deployment script failed”的信息。
我发现我需要为该命令激活虚拟环境,这很有道理。从asdf中,我尝试了这个:
container_commands:
01_migrate:
command: "source /opt/python/run/venv/bin/activate && python rlg/manage.py migrate --noinput"
leader_only: true
但它不起作用。实际上,通过SSH,我发现我甚至没有/opt/python/文件夹,只有/opt/aws/和/opt/elasticbeanstalk/。所有的教程和SO问题都涉及到这个文件夹,但我没有它?
版本: Python 3.4.1,Django 1.7.7,AWS CLI 3.2.1,Postgres 9.3