2017-07-01 126 views
-1

我一直在尝试在AWS上部署我的基于Django的问卷调查应用程序。我完全不熟悉AWS和Web应用程序。
当我建我的应用程序它运行上的LocalServer罚款和我在settings.py使用这样的:使用弹性beanstalk数据库

DATABASES = { 
'default': { 
    'ENGINE': 'django.db.backends.sqlite3', 
    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 
    } 
} 

我已成功地使用弹性魔豆successfuly部署我的应用程序,它是工作的罚款。但是之后我必须对代码进行一些更改,并使用本地目录中的'eb deploy'来部署新版本。
这导致了所有数据的丢失(直到现在填充的响应)。我意识到我需要做一些关于我的数据库的事情。由于我对这一切都是全新的,所以一些帮助和指导将不胜感激。

+2

代替sqlite(它本地化为一台机器),设置远程mysql/postgresql /玛丽亚等服务器 – hjpotter92

+0

感谢您的评论。你能否向我提供任何有助于我这样做的资料? –

回答

2

男人,我有过这样的经历,对你没有好消息。最糟糕的是,没有人告诉我现在我会告诉你什么。这意味着我在了解正在发生的事情之前花了很多时间...

想想这个问题:当您创建弹性beanstalk环境时,AWS会为您提供一切:实例,eb卷,负载均衡器和全部。当您上传修订版本时,使用控制台或AWS cli,AWS会根据弹性beanstalk映像从头开始重新创建您的实例。这意味着保存在您环境磁盘上的每个数据都将被丢弃。新环境将被初始化为“空”磁盘(因此平台文件将在那里)。这意味着:根据您保存的数据,您的数据库将生活在天堂或地狱中。

如果您需要在实例终止/重新初始化后保留数据,则必须配置额外的弹性块存储或弹性文件系统。但是为了这个工作,你必须在初始化后改变你的初始化脚本以附加块存储或文件系统。请记住,Elastic Beanstalk在终止/重新创建实例时有点暴躁。如果你的数据库需要一些正确关闭的程序,eb会让它哭泣(根据个人经验评论)。

这种情况下的最佳做法是将您的数据库安装在不同的实例中,并使其独立于应用程序环境运行。在这种情况下,您可以在部署新版本时忘记数据库。

检查here了解更多信息。

+0

大声笑感谢人的头!我想我会在亚马逊RDS上解决这个问题,并且看看我的生活在哪里〜_〜 –