web-dev-qa-db-ja.com

Djangoのセットアップ:WSGIPathが見つかりません

私はここ数日、DjangoをAmazon Web ServicesのElastic Beanstalkの下にセットアップするために試みています。私が直面している問題はこれだと思います:

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

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

./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を直接使用する必要がありますか?

27
Xephryous

https://forums.aws.Amazon.com/thread.jspa?messageID=396656&#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
14
tutuDajuju

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

8
Rose Perrone

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

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

3
Leo

わかりました。100万回試してみた結果、次のようになりました。環境を更新するには、eb updateを実行する必要があります。

そのため、.elasticbeanstalk/optionsettings.whatever-envにWSGIPathを必要な値に設定し、.ebextensions/whatever.configに次のように設定してください。

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

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

alias eb="python2.7 ../AWS-ElasticBeanstalk-CLI-2.6.3/eb/linux/python2.7/eb"
2
capcom

AWSのドキュメントを実際に試した後、同じ問題が発生しました。それを回避するために行ったのは、AWS CLIが指示するコマンド(〜/ ebdjango $ eb init -p python2.7 Django-tutorial)を使用せずにEB CLIを介してアプリケーションを段階的に初期化し、環境を段階的に作成することでした同じように。 EB CLIで実行した手順は次のとおりです。

  1. アプリケーションを初期化する
    1. eb init
    2. デフォルトの地域を選択
    3. アプリケーション名を入力(デフォルトではEnterキーを押して使用)
    4. Pythonを使用していることを確認
    5. 選択済みPythonローカル環境と互換性のあるバージョン
    6. SSHを設定する
  2. 環境を作成
    1. eb create
    2. 環境名を入力してください(Enterキーを押すとデフォルトで使用されます)
    3. DNS CNAMEプレフィックスを入力します(Enterキーを押すとデフォルトで使用されます)
    4. ロードバランサーのタイプを選択します(1を入力してクラシックを選択しました)

環境が作成されたら、eb configを使用してEBの構成ファイルを開き、WSGIへのパスが正しいことを確認します。

aws:elasticbeanstalk:container:python:
  NumProcesses: '1'
  NumThreads: '15'
  StaticFiles: /static/=static/
  WSGIPath: path/to/wsgi.py

変更を行った場合は、ファイルを保存し、ターミナルにeb openと入力してすべてが直角になっていることを確認して、前の手順で指定したドメイン名を使用してブラウザウィンドウを開きます。

2
user2583728

解決策:EBCLIの使用

開いた eb config私にとってはWSGIPath: application.py変更してください

WSGIPath: my_app/wsgi.py

保存して展開します。

0
Arun K