我一直在尝试在 AWS 上部署基于 Django 的问卷应用程序。就此而言,我对 AWS 和 Web 应用程序完全陌生。
当我构建我的应用程序时,它在本地服务器上运行良好,我在 settings.py 中使用了它:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
我已经成功地使用弹性豆茎部署了我的应用程序,并且工作正常。但后来我必须对我的代码进行一些更改,并且我使用本地目录中的“eb deploy”来部署新版本。
这导致所有数据丢失(到目前为止填写的响应)。我意识到我需要对我的数据库做一些事情。由于我对这一切完全陌生,因此将不胜感激一些帮助和指导。
伙计,我过去有过这样的经历,但没有好消息告诉你。最糟糕的是没有人告诉我我现在要告诉你什么。这意味着我花了很多时间才明白正在发生的事情......
想一想:当您创建弹性 beanstalk 环境时,AWS 会为您提供一切:实例、eb 卷、负载均衡器等等。当您使用控制台或 AWS cli 上传修订版本时,AWS 会根据弹性 beanstalk 映像从头开始重新创建您的实例。这意味着保存在您环境磁盘上的所有数据都将被丢弃。新环境将使用“空”磁盘进行初始化(因此和平台文件将在那里)。这意味着:您的数据库将生活在天堂或地狱,具体取决于您在其中保存的内容。
如果您需要在实例终止/重新初始化后保留数据,则必须配置额外的弹性块存储或弹性文件系统。但要使其工作,您必须更改初始化脚本以在初始化后附加块存储或文件系统。请记住,Elastic Beanstalk 在终止/重新初始化实例时有点粗暴。如果你的数据库需要一些程序才能正确关闭,eb 只会让它哭泣(基于个人经验的评论)。
这种情况下的最佳实践是将数据库安装在不同的实例中,并使其独立于应用程序环境运行。在这种情况下,当您部署新修订版时,您可能会忘记数据库。
Check here http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.concepts.design.html了解更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)