EC2でDjango+Nginx環境構築するメモ (Amazon Linux AMI 2012.03
選択したAMIは”Amazon Linux AMI 2012.03″
以下の記事が参考になったのですが、記事の中で使われているAMIはUbuntuなのでapt-getをeasy_installにしてます。
詰まったとこメモしてるだけなので、全体像は偉大なるリンク先参照ください。
sshでつなげて、いろいろインストールしてDjango用の環境を作る。
sudo easy_install python-pip sudo pip install pip --upgrade sudo pip install virtualenv sudo yum install nginx virtualenv --no-site-packages django_app cd django_app source bin/activate
アプリケーション作成して、とりあえずgunicorn_djangoで実行。
#このときEC2のSecurityGroupでport8000を許可してなくて一度つまりました。
pip install django gunicorn django-admin.py startproject app cd app gunicorn_django -b 0.0.0.0:8000
これで、PublicDNS:8000にアクセスしたらDjangoのwork画面が見られる。
control+cで終了して次にNginxの設定。
sudo mkdir -p /opt/django/logs/nginx/ mkdir $HOME/django_app/static mkdir $HOME/django_app/templates sudo ln -s $HOME/django_app/static /opt/django sudo mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.backup #ここでdefault.confを書き換える。設定内容はリンク先記事のwgetで取得したものを参考にしたので省略。
DjangoのTEMPLATE_DIRSに作成したディレクトリを追加。
TEMPLATE_なんたらと間違えてて詰まった。ちゃんとDIRSだと確認。
Django触るの初めてだよと言い訳。
vi settings.py TEMPLATE_DIRS = ( '/home/ec2-user/django_app/templates', )
urlpatternにテスト用テンプレートのurlを追加。
import direct_to_templateも忘れずに追加。
vi urls.py
from django.conf.urls.defaults import patterns
from django.views.generic.simple import direct_to_template
urlpatterns = patterns('',
(r'^test_static/$', direct_to_template, {'template': 'test_static.html'}),
)
以下のテンプレディレクトリにhtmlを置いておく。端折ってHelloWorldとだけ書いときました。
/home/ec2-user/django_app/templates/test_static.html
Nginxを再起動して、gunicorn_djangoで再度gunicornを動かす。
今回は80番portでアクセス(PublicDNS/test_static/)出来る。SecurityGroupで80番portが許可されているか確認。
最後に自動起動させるためににUpstartに登録する。
/etc/init/以下に.confファイルを置けばいいのだけど、.confファイルの記述ミスってるとそもそもサービスとして認識してくれない。
で、リンク先ではwww-dataってユーザーに実行させてるけど、www-dataにどのくらい権限与えればいいのかよくわかんなかったので、取り急ぎec2-userで実行するよう書いときました。
#!/bin/bash set -e LOGFILE=/var/log/gunicorn/django_app.log LOGDIR=$(dirname $LOGFILE) NUM_WORKERS=3 #recommended formula here is 1 + 2 * NUM_CORES USER=ec2-user cd /home/ec2-user/django_app source bin/activate cd app test -d $LOGDIR || mkdir -p $LOGDIR exec gunicorn_django -w $NUM_WORKERS \ --log-level=debug \ --log-file=$LOGFILE 2>>$LOGFILE \ --user=$USER
以上。
って、ホントはflaskの入った環境欲しいなと思い始めたので、放置してflaskでアプリ組むための環境作ろうと思います。
気が変わってもイメージとっておけるのがEC2の良いところですね。
4月 22, 2012
Categories:
Tags: 

