2017-07-01 13 views
-1

私はDjangoベースのアンケートアプリケーションをAWSにデプロイしようとしています。私は、AWSとウェブアプリのために全く新しいです。私はそれがのLocalServerの罰金実行していたと私は私のsettings.pyでこれを使用する私のアプリを構築し
弾力のあるbeanstalkでデータベースを使用する

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

私はsuccessfuly Elastic Beanstalkでを使用して自分のアプリケーションを配備するために管理している、そしてそれがうまく働いていました。しかし、私は自分のコードにいくつか変更を加えなければならず、新しいバージョンを配備するためにローカルディレクトリから「eb deploy」を使用しました。
これにより、すべてのデータが失われています(これまでの回答はすべて満たされています)。私は自分のデータベースについて何かする必要があることを認識しました。私はこのすべてに全く新しいので、いくつかの助けと指針は高く評価されます。

+2

(マシンにローカライズされている)sqliteではなく、リモートのmysql/postgresql/mariaなどのサーバを設定してください。 – hjpotter92

+0

コメントありがとうございます。あなたは私にそれをするのを助ける何らかの情報源を私に提供することができますか? –

答えて

2

男、私は過去にこの経験があり、あなたに良い知らせがありません。最悪の部分は、誰も私があなたに今何を伝えるか教えてくれなかったことです。何が起こっているのかを理解する前に多くの時間を費やしていたことを意味します。

考えてみましょう:弾力のあるbeanstalk環境を作成すると、AWSはインスタンス、ebボリューム、ロードバランサなどすべてを提供します。コンソールまたはAWS cliを使用してリビジョンをアップロードすると、AWSは弾力のあるbeanstalkイメージに基づいて、インスタンスをゼロから再作成します。つまり、ご使用の環境のディスクに保存されたすべてのデータが破棄されます。新しい環境は "空の"ディスクで初期化されます(プラットフォームファイルもそこにあります)。つまり、あなたのデータベースはあなたが保存したものに基づいて、天にも地獄にも生きています。

インスタンスの終了/再初期化後にデータを保持する必要がある場合は、余分な弾性ブロックストレージまたは弾性ファイルシステムを構成する必要があります。しかし、これを動作させるには、初期化スクリプトを変更して、初期化後にブロックストレージまたはファイルシステムをアタッチする必要があります。そして、Elastic Beanstalkは、インスタンスを終了/再拡張するときに少し軽蔑的です。データベースが正しくシャットダウンするための手順が必要な場合、ebは泣かせます(個人的な経験に基づくコメント)。

この場合のベストプラクティスは、データベースを別のインスタンスにインストールし、アプリケーション環境とは独立して実行し続けることです。この状況では、新しいリビジョンをデプロイするときにデータベースを忘れることがあります。

詳細については、hereを確認してください。

+0

頭を上げてくれてありがとう!私はアマゾンRDSでそれを動作させて、人生がどこに~~〜 –

関連する問題