25

Amazon Web ServicesのElastic Beanstalkの下でDjangoを設定しようと数日間試してきました。私は私が打ってる問題はこの1つだと思う:私はチュートリアルhereを踏襲し、すべてのステップ6の最後までうまく行くが、私は私の人生のために他を表示するために何かを得ることができない AWSでDjangoを設定するElastic Beanstalk:WSGIPathが見つかりません

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

ステップ5の#2の一般的なElastic Beanstalkのページよりも。私は私のローカルマシン上

./manage.py runserver 

を実行すると、すべてのものは、それが必要として動作しますが、私は、そのページを展開することができません。まず私が書いた小さなDjangoサイトで試してみました。それはうまくいきませんでしたので、私がやったすべてを削除してやり直しました。うまくいきませんでしたので、すべて削除して、新しくdjangoをインストールしてみました。私は小さな事をしながら何度も試してみましたが、私は何か大きなものが欠けていると思います。

this tutorialに記載されている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を直接使うべきですか?

+6

この問題は[詳細] [こちら](https://forums.aws.amazon.com/thread.jspa?messageID=396656񠵰)で解決されました。 すべてのコードを1つのディレクトリに格納していましたが、そのディレクトリ全体を圧縮してアップロードしました。私がしなければならなかったのは、ディレクトリそのものではなく、そのディレクトリ内のすべての関連ファイルを圧縮していたからです。圧縮されていれば、そのファイルはすべてサイトのルートディレクトリにあります。これは、同じ問題を抱えている誰かを助けることを望みます。私は同じ問題がGUIとgit経由でアップロードされていると思う。 – Xephryous

+2

あなたは質問を編集するのではなく、あなた自身の答えを加えてそれを受け入れるべきです。 – bikeshedder

+0

コミットされていない変更は展開されないので、EB CLIで展開するためにコミットされた ".ebextensions"フォルダのすべての変更を行う必要があります。 – nisevi

答えて

13

https://forums.aws.amazon.com/thread.jspa?messageID=396656&#396656

から「.ebextensions」ディレクトリは、アプリケーションのルート・レベルのディレクトリである必要がありますが、ログ出力から、ディレクトリは、 『個人用サイト/ .ebextensions』ディレクトリに代わりです。だから、例えば、あなたが「Gitのaws.push」あなたのルートディレクトリを実行すると、ドキュメント内のDjangoチュートリアルに従った後、次のようになります。これに代えて

. 
├── .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 
+2

それは1つです!私は実際に自分の質問に答えた[ここ](http://stackoverflow.com/questions/13102076/setting-up-django-on-aws-elastic-beanstalk-wsgipath-not-found/17711770?iemail=1&noredirect = 1#comment17943273_13102076)。私は、その時に何かを返答するのに十分な評判がなかったと思う。とにかく、問題は解決されます。 – Xephryous

+1

psycopg2のインストールに問題がありました。 .ebextensions/01-app.configファイルにこれらの行を追加しました。 パッケージ: yum: postgresql93-devel:[] –

8

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

+0

相対パスは何ですか?また、 'eb'スクリプトは、私がそこに入れた値を上書きし続けるようです。 – Mikhail

1

[OK]をここで何百万ものを試した後私のために働いたものです。環境を更新するには、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を実行し、それ動作するはずです。あなたのebコマンドが実際に動作することを確認するためにエイリアスを設定しなければならないことに注意してください。たとえば:

alias eb="python2.7 ../AWS-ElasticBeanstalk-CLI-2.6.3/eb/linux/python2.7/eb" 
+1

私は 'eb update'が最近' eb deploy'に変更されたと思います。これは、2016年にこの種の情報を探している人には役に立ちます:) – Vlad

1

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

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

2

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

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

環境は、私は私のWSGIへのパスは、それがどうあるべきかであることを確認するために、EBのconfigファイルを開くためにeb configを使用して作成された後:

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

何らかの変更が行われた場合は、ファイルを保存していることを確認し、前の手順で指定したドメイン名を使用してブラウザウィンドウを開くには、端末にeb openと入力してすべてが正方形になっていることを確認します。