AWS Elastic Beanstalk Django アプリケーション環境を CentOS6.5 上に PyDevを使って構築する(5) アプリケーションの作成
- (1) Django起動まで
- (2) (TIPS) SSH、RDSへの接続
- (3) (TIPS) ログの確認とデプロイ結果の確認
- (4) いくつかのトラブルシュート
- (5) アプリケーションの作成
- (6) createadmin スクリプトの実行のトラブルシュート
- (7) 静的IPアドレスの設定とドメインの取得とDNSの設定
- AWS Elastic Beanstalk RDS の文字コードをutf-8に設定しなおす
- Djangoでバッチ処理を行う(AWS Elasticbeanstalk)
チュートリアルにある、コマンドを動かす箇所(ローカルコンピュータで、createadmin.py という名前のファイルを作成し、最上位ディレクトリ(/root/mysite/)の scripts という名前のディレクトリに保存します のくだり)はなかなか難関(?)なので、先送りにして、アプリケーションを作成してみる。
1.アプリケーションの編集
1.1 settings.py で アプリケーションを有効にする
INSTALL_APPS に自アプリケーション(例では”phrase”)を追加する。
- INSTALLED_APPS = (
- 'django.contrib.admin',
- 'django.contrib.auth',
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- 'django.contrib.messages',
- 'django.contrib.staticfiles',
- 'phrase'
- )
1.2 リクエストを受け付ける処理(home)を phrase/views.py に作成する
- # -*-coding:utf-8 -*-
- from django.http import HttpResponse
- from django.template import RequestContext, loader
- import logging
- logger = logging.getLogger(__name__)
- def home(request):
- t = loader.get_template('phrase.html')
- c = RequestContext(request, {})
- return HttpResponse(t.render(c))
1.3 リクエスト結果のテンプレートHTMLファイルをphrase/templates/phrase.htmlに作成する
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title>Phrase</title>
- </head>
- <body>
- Hello Phrase Application!
- </body>
- </html>
1.4 リクエストを 上記で作成したメソッドに結びつけるよう url.py に追記
url(r’^$’,’phrase.views.home’,name=’home’) を追記
- from django.conf.urls import patterns, include, url
- from django.contrib import admin
- urlpatterns = patterns('',
- # Examples:
- # url(r'^$', 'phrase.views.home', name='home'),
- # url(r'^blog/', include('blog.urls')),
- url(r'^$','phrase.views.home',name='home'),
- url(r'^admin/', include(admin.site.urls)),
- )
1.5 構成
このような構成になる
1.6 ローカル環境で起動確認
OK!
1.6 コミット
変更点をコミットする
2.デプロイ
2.1 virtualenv 環境を起動する
- [piroto@localhost ~]$ virtualenv -p python2.7 ~/virtualenv
- Already using interpreter /usr/local/bin/python2.7
- New python executable in /home/piroto/virtualenv/bin/python2.7
- Traceback (most recent call last):
- File "/usr/local/bin/virtualenv", line 11, in
sys.exit(main()) File "/usr/local/lib/python2.7/site-packages/virtualenv.py", line 825, in main symlink=options.symlink) File "/usr/local/lib/python2.7/site-packages/virtualenv.py", line 985, in create_environment site_packages=site_packages, clear=clear, symlink=symlink)) File "/usr/local/lib/python2.7/site-packages/virtualenv.py", line 1277, in install_python shutil.copyfile(executable, py_executable) File "/usr/local/lib/python2.7/shutil.py", line 83, in copyfile with open(dst, 'wb') as fdst: IOError: [Errno 26] Text file busy: '/home/piroto/virtualenv/bin/python2.7'
も、エラー
Virtualenv環境をEclipseのインタープリタとして使っているため、ロックされているようだ。
一旦、Eclipseを終了させ、再実行
- [piroto@localhost ~]$ virtualenv -p python2.7 ~/virtualenv
- Already using interpreter /usr/local/bin/python2.7
- New python executable in /home/piroto/virtualenv/bin/python2.7
- Not overwriting existing python script /home/piroto/virtualenv/bin/python (you must use /home/piroto/virtualenv/bin/python2.7)
- Installing setuptools, pip...done.
- [piroto@localhost ~]$ . ~/virtualenv/bin/activate
OK!
この後、Eclipseを起動しても問題ない。
最適な手順はあらためて考えることとする。
2.2 pushする
コマンドラインから、ワークスペースのプロジェクトフォルダへ降りて、git aws.push を実施
- (virtualenv)[piroto@localhost ~]$ cd ~/workspace_venv_phrase/phrase/
- (virtualenv)[piroto@localhost phrase]$ ls -a
- . .ebextensions .git .project .settings phrase
- .. .elasticbeanstalk .gitignore .pydevproject manage.py requirements.txt
- (virtualenv)[piroto@localhost phrase]$ git aws.push
- Updating the AWS Elastic Beanstalk environment phrase-env...
- Environment update initiated successfully.
更新完了
2.3 確認
起動確認。
OK!