29

私は数日間、AmazonWebServicesのElasticBeanstalkの下にDjangoをセットアップしようとしています。私が直面している問題はこれだと思います:

ERROR - Your WSGIPath refers to a file that does not exist.

私はここのチュートリアルに従い、ステップ6の終わりまですべてうまくいきましたが、ステップ5、#2の一般的なElasticBeanstalkページ以外のものを表示することはできません。私が走るとき

./manage.py runserver

ローカルマシンでは、すべてが正常に機能しますが、そのページを展開できません。私は最初に自分で書いた小さなDjangoサイトで試しました。それが機能しなかったので、私が行ったすべてを削除して再試行しましたが、それは機能しませんでした。それで、すべてを削除して、新しいdjangoインストールで再試行しました。私はそれを何度も小さなことをいじってみましたが、私は何か大きなものが欠けていると思います。

このチュートリアルの説明に従って、python.configファイルを追加しました。

これが私のファイル構造です:

-.git/
-.mysite/
    -myapp/
        -__init__.py
        -models.py
        -tests.py
        -views.py
    -mysite/
        -__init__.py
        -settings.py
        -urls.py
        -wsgi.py
    -.ebextensions/
        -python.config
    -manage.py
    -mysite.db
    -requirements.txt

私のsettings.pyから:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'mysite.db',
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
    }
}

python.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: mysite/wsgi.py
    - option_name: DJANGO_SETTINGS_MODULE
      value: mysite.settings
    - option_name: AWS_SECRET_KEY
      value: <This is my secret key>
    - option_name: AWS_ACCESS_KEY_ID
      value: <This is my access key>

WSGIPathを定義する必要がある別の場所はありますか?AWSコンソールを介してそれを行う方法はありますか?EBを完全にスキップしてEC2を直接使用する必要がありますか?

4

6 に答える 6

14

https://forums.aws.amazon.com/thread.jspa?messageID=396656൰から

「.ebextensions」ディレクトリはアプリケーションのルート レベル ディレクトリにある必要がありますが、ログ出力から、ディレクトリは代わりに「mysite/.ebextensions」ディレクトリにあります。たとえば、ドキュメントの django チュートリアルに従って「git aws.push」を実行すると、ルート ディレクトリは次のようになります。

.
├── .ebextensions
│   └── python.config
├── .elasticbeanstalk
│   ├── config
├── .git
├── .gitignore
├── manage.py
├── mysite
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── requirements.txt

これの代わりに:

.
└── mysite
    ├── .ebextensions
    ├── .elasticbeanstalk
    ├── .git
    ├── .gitignore
    ├── manage.py
    ├── mysite
    └── requirements.txt
于 2013-02-17T21:12:35.423 に答える
8

.elasticbeanstalk/optionsettings.your-app-nameアプリのルート ディレクトリで検索します。検索してWSGIPath、意図したパスであることを確認します。デフォルトでは のようapplication.pyです。

于 2013-07-17T23:04:18.660 に答える
3

私は同じ問題を抱えていました(「あなたのWSGIPathは存在しないファイルを参照しています」)、最終的に解決策を見つけました:

注: 最初は、EB にも次のメッセージが表示されていたため、間違った方向に検索していました: ビルド中にエラーが発生しました: コマンド 01_migrate が失敗しました。. そのため、*.config を含むファイルは正しく配置されていました。

于 2015-03-24T15:17:17.330 に答える
2

わかりました、何百万ものことを試した後、これが私のために働いたものです. eb update環境を更新するには、実行する必要があります。

したがって、.elasticbeanstalk/optionsettings.whatever-envWSGIPath が希望どおりに設定されていることを確認し、次のようになっていることを確認し.ebextensions/whatever.configてください。

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

次に、実行するeb updateと動作するはずです。ebコマンドが実際に機能することを確認するには、エイリアスを設定する必要があることに注意してください。例えば:

alias eb="python2.7 ../AWS-ElasticBeanstalk-CLI-2.6.3/eb/linux/python2.7/eb"
于 2014-07-05T04:05:57.323 に答える