私はここ数日、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を直接使用する必要がありますか?
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
アプリのルートディレクトリで.elasticbeanstalk/optionsettings.your-app-name
を見つけます。 WSGIPath
を検索し、意図したパスであることを確認します。デフォルトはapplication.py
のようです。
私は同じ問題を抱えていました( "あなたのWSGIPathは存在しないファイルを参照しています")、そして最後に解決策を見つけました:
注:EBもこのメッセージを表示していたため、最初は間違った方向で検索していました:ビルド中にエラーが発生しました:コマンド01_migrateが失敗しました。したがって、*。configを含むファイルは正しく配置されました。
わかりました。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"
AWSのドキュメントを実際に試した後、同じ問題が発生しました。それを回避するために行ったのは、AWS CLIが指示するコマンド(〜/ ebdjango $ eb init -p python2.7 Django-tutorial)を使用せずにEB CLIを介してアプリケーションを段階的に初期化し、環境を段階的に作成することでした同じように。 EB CLIで実行した手順は次のとおりです。
eb init
eb create
環境が作成されたら、eb config
を使用してEBの構成ファイルを開き、WSGIへのパスが正しいことを確認します。
aws:elasticbeanstalk:container:python:
NumProcesses: '1'
NumThreads: '15'
StaticFiles: /static/=static/
WSGIPath: path/to/wsgi.py
変更を行った場合は、ファイルを保存し、ターミナルにeb open
と入力してすべてが直角になっていることを確認して、前の手順で指定したドメイン名を使用してブラウザウィンドウを開きます。
解決策:EBCLIの使用
開いた eb config
私にとってはWSGIPath: application.py
変更してください
WSGIPath: my_app/wsgi.py
保存して展開します。