Amazon Elastic BeanstalkでDjangoを動かす(前編)

ELB/EC2組み合わせはもはやWebサーバ立てるときの定番になりつつあると信じているのだが、毎回毎回設定をするのも面倒である。Elastic Beanstalkとやらを使えばそのあたりを自動化できるらしいのだが、自分が得意とするDjangoフレームワークを含むPython言語は長らくサポートされていなかった。

が、この夏辺りにPythonがサポートされたと聞いたのでおっとり刀で試してみましたよ。Amazon謹製Tutorialがあるので楽勝だろう、と。→ちょっと苦労しました。

Tutorial通りに作業していくとStep6の手順6が終わった段階で404が返ってくる。ログを見ると「Your WSGIPath refers to a file that does not exist」というエラーが残っており、どうやら環境回りの間違いということはわかった。

どこをどう調べて良いかすらわからない状態だったので、まずは偏った言語信者の垂れ流しさんの記事を参考にしてWSGI回りの定義が機能しているかを確認。→.ebextensions/.configはちゃんと読まれているらしい、ということはわかった。

ということで、再度Amazon Tutorialどおりに作業していくとデプロイ中にエラーがでることを確認(図)

eb error

これはなぜか? まだ何のモデルも定義していないのにsyncdbを走らせようとしているからではないか、と考えた。で、.configからsyncdb回りのコマンドを削除して、再度デプロイ→成功
eb worked
ということで、モデルを定義していない限り、.configは以下のようにしておく必要がある。

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: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
  - option_name: AWS_ACCESS_KEY_ID
    value: AKIAIOSFODNN7EXAMPLE

その他諸々の感想

  • t1.microから使うと、eb startコマンドは結構時間がかかる。速いインスタンスを使えば解決するのだろうけど。
This entry was posted in ソフトウェア開発 and tagged , , . Bookmark the permalink.