1

django ウェブアプリを AWS EB にデプロイするのに助けが必要です。私のローカル開発環境は mac os maverick です。私はdjango 1.6とvirtualenv 1.11.4を使用しています。AWS の手順を使用してデプロイできた場合は、その経験と、障害を克服するために別の方法で行ったことを共有していただければ幸いです。

[django aws] ( http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_Python_django.html )

ステップ 6: アプリケーションの更新で行き詰まっています。

いくつかの構成ファイルを試しましたが、どれも機能しませんでした:

dgeneric.config:

container_commands:
  01_syncdb:    
    command: "django-admin.py syncdb --noinput"
    leader_only: true

option_settings:
  - namespace: aws:elasticbeanstalk:container:python
    option_name: WSGIPath
    value: django_generic/wsgi.py
  - option_name: DJANGO_SETTINGS_MODULE
    value: django_generic.settings
  - option_name: AWS_SECRET_KEY
    value: SAMPLESECRETxMkk7DTME37PgiEnzA8toans
  - option_name: AWS_ACCESS_KEY_ID
    value: SAMPLEACCESSDAHRD7A

dgeneric.config バージョン 2:

container_commands:
  collectstatic:
    command: "django-admin.py collectstatic --noinput"
  01syncdb:
    command: "django-admin.py syncdb --noinput"
    leader_only: true
  02migrate:
    command: "django-admin.py migrate"
    leader_only: true
  99customize:
    command: "scripts/customize.sh"

 You can specify any key-value pairs in the aws:elasticbeanstalk:application:environment namespace and it will be 
 passed in as environment variables on your EC2 instances
option_settings:
  "aws:elasticbeanstalk:application:environment":
    DJANGO_SETTINGS_MODULE: "django_generic.settings"
    "application_stage": "staging"
  "aws:elasticbeanstalk:container:python":
    WSGIPath: django_generic/wsgi.py
    NumProcesses: 3
    NumThreads: 20
  "aws:elasticbeanstalk:container:python:staticfiles":
    "/static/": "static/"

dgeneric.config バージョン 3:

container_commands:
 00_make_executable:
  command: "chmod +x scripts/createadmin.py"
  leader_only: true
 01_syncdb:
  command: "django-admin.py syncdb --noinput"
  leader_only: true
 02_createadmin:
  command: "scripts/createadmin.py"
  leader_only: true
 03_collectstatic:
  command: "django-admin.py collectstatic --noinput"
option_settings:
 "aws:elasticbeanstalk:container:python:environment":
  DJANGO_SETTINGS_MODULE: "django_generic.settings"
 "aws:elasticbeanstalk:container:python":
  WSGIPath: "django_generic/wsgi.py"
 "aws:elasticbeanstalk:container:python:staticfiles":
  "/static/": "static/"

私が受け取ったエラーは次のとおりです。

2014-03-19 16:30:09 UTC-0400    INFO    Environment update completed successfully.
2014-03-19 16:30:09 UTC-0400    INFO    New application version was deployed to running EC2 instances.
2014-03-19 16:30:08 UTC-0400    INFO    Command execution completed. Summary: [Successful: 0, Failed: 1].
2014-03-19 16:30:08 UTC-0400    ERROR   [Instance: i-3311f412 Module: AWSEBAutoScalingGroup ConfigSet: null] Command failed on instance. Return code: 1 Output: Error occurred during build: Command 02_createadmin failed .
2014-03-19 16:28:59 UTC-0400    INFO    Deploying new version to instance(s).

また、構成ファイルにわずかな変更を加えた別の試行からのエラーの別のスニペットを次に示します。

2014-03-19 16:02:57 UTC-0400    INFO    Environment update completed successfully.
2014-03-19 16:02:57 UTC-0400    INFO    New application version was deployed to running EC2 instances.
2014-03-19 16:02:56 UTC-0400    INFO    Command execution completed. Summary: [Successful: 0, Failed: 1].
2014-03-19 16:02:56 UTC-0400    ERROR   [Instance: i-3311f412 Module: AWSEBAutoScalingGroup ConfigSet: null] Command failed on instance. Return code: 1 Output: Error occurred during build: Command 01_syncdb failed .
2014-03-19 16:02:49 UTC-0400    INFO    Deploying new version to instance(s).
2014-03-19 16:01:52 UTC-0400    INFO    Environment update is starting.

基本的に、これらのエラーは構成ファイルが正しく構成されていないことが原因です。あなたのサクセス ストーリーや、展開のこのステップをどのようにパスしたかを教えていただけますか? 私が見ているように、次のAmazon docsは機能しません。ところで、次の例も試しましたが、うまくいかなかったようです。 http://grigory.ca/2012/09/getting-started-with-django-on-aws-elastic-beanstalk/

本当にありがとうございました。

4

5 に答える 5

2

あなたの痛みが分かります。

デプロイ コマンド ラインからを使用eb logsすると、この問題を解決するために必要なスタック トレースが毎回返されることがわかりました。戻ってきたログを検索する01_syncdbと、解決策を見つけるために必要なビットが見つかります。私にとっては何度も起こりましたが、原因が私local_settings.pyをgitリポジトリに入れたことでした。次にeb logs、アプリケーションが 127.0.0.1 のデータベースに接続しようとしていることがわかりました。そのファイルを git から削除して再デプロイし、BLAMMO! アプリケーションが修正されました。

これを実行して、ログをローカルにキャプチャできます: eb logs > eb_logs.txt.

残念ながら、eb statusコマンドからの応答は非常に短いものです。完全なログを読むことは、そこで何が起こったのかを本当に知る唯一の方法です. BRIGHT SIDE ™ は、eb logsインスタンスに接続する必要がないことです。

于 2014-06-18T15:13:20.767 に答える
2

django docで報告されているように、django-admin.py使用する代わりに使用します。manage.py

また、manage.py は各 Django プロジェクトに自動的に作成されます。manage.py は django-admin.py の薄いラッパーであり、django-admin.py に委譲する前に次の 2 つの処理を行います。

プロジェクトのパッケージを sys.path に置きます。プロジェクトの settings.py ファイルを指すように DJANGO_SETTINGS_MODULE 環境変数を設定します。django.setup() を呼び出して、Django のさまざまな内部を初期化します。

したがって、私の作業構成は次のとおりです。

container_commands:
  01_syncdb:
    command: "python manage.py syncdb --noinput"
    leader_only: true
...

ps: 構成ファイルで aws 資格情報を渡さないでください! 代わりに環境変数を使用してください;)

于 2014-03-21T15:41:22.503 に答える
1

.config ファイルを使用して環境変数を設定する際に問題がありました。だから私がしたことは、最小限のoption_settingsのみを使用することです:

option_settings:
  - namespace: aws:elasticbeanstalk:container:python
    option_name: WSGIPath
    value: django_generic/wsgi.py

そして、 wsgi.py に次の行があります

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_generic.settings")

また、EB 環境の設定 ([構成] --> [ソフトウェア構成] --> [環境プロパティ]) ですべての環境変数 (AWS アクセス キーなど) を設定します。ALLOWED_HOSTSまた、設定やDB_NAMEその他を設定できる場所でもあります。

この問題は、django-admin.py と manage.py の使用に関連している場合もあります。次の質問を参照してください: AWS Elastic Beanstalk での Django: デプロイ時の予期しない syncdb エラー

于 2014-03-20T17:35:51.010 に答える
0

これは、新しいアプリをデプロイし、RDS インスタンスを作成するのを忘れた場合にも発生します。

于 2015-03-30T16:48:00.000 に答える