[2] IBM Bluemixでウェブアプリを作る -djangoのセットアップ-

Share Button

まず,djangoに慣れたい人はこの辺を見るべし.
Python Django入門 (2) Mac編 – Qiita

さっさとdjangoを入れる.

$ sudo pip install django
入った.入ったけどこれはあくまでローカルに入ったってだけのことで,下に詳述するけどBluemix上で必要なパッケージを呼び出す場合には,ルートディレクトリにrequirements.txtを作成する.

ローカルに試しに一個プロジェクトを作る.
$ django-admin.py startproject janal
前に別件で作ってあったdjangoのシステムがあるんだけど,それを統合しようとしたらBluemixのアプリ自体が死んだので泣く泣く手で作っていく.

とりまローカルで動くことを確認する

$ cd janal
$ python manage.py migrate
$ python manage.py runserver
http://127.0.0.1:8000/を叩くと,
Welcome_to_Django

janal/urls.pyを開いてURLの設定を作るためにurlpatternsにindexページを追記
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', 'janal.views.index'),
]

janal/views.pyを開いてそのindexのURLに対応するページを作成する.最終的にtwitter bootstrapで組んだHTMLを表示させるので,index.htmlがレンダリングされるようrender_to_responseのインポートを忘れずに.
from django.template import RequestContext
from django.shortcuts import render_to_response

def index(request):
    return render_to_response('index.html', {},
            context_instance=RequestContext(request))
   
def about(index):
    return render_to_response('index.html', {})

index.htmlをとりあえず仮で作り,新たにtemplateというフォルダを作ってそこに保存.
Hello, world!

ぼくはhtmlファイルは全てtemplateフォルダから読み出して,あとのために静的ファイルは同様にstaticフォルダから読み出したいので,settings.pyを開き,
TEMPLATE_DIRS = (
    os.path.join(BASE_DIR, "template"),
)
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)

できたら
$ cd janal
$ python manage.py migrate
$ python manage.py runserver
でサーバを立ち上げて,http://127.0.0.1:8000/にアクセスしてみる.
127_0_0_1_8000
ちゃんと走ってHello, worldが表示されてます.
ということでルートに戻ってデプロイ.
cf push ***

Bluemix側の処理

あとは今ローカル環境でちゃんと動作したシステムがBluemix上でも走ればいいので,↓の「ステップ 4. アプリケーションを Bluemix にデプロイする」を参考に,依存関係の解決やデプロイ時点でのアプリケーションの起動などの処理を施す.
Python、Django、MongoDB を使用して Bluemix 上で世界銀行のデータをグラフ化するアプリを作成、デプロイする

ローカルならpip installでパッケージをインストールするという動作で終わりですが,Bluemix上ではルートフォルダにあるrequirements.txtに必要なパッケージとそのバージョンを指定することで,Bluemix上でも自由に呼び出してインポートしたりできるようになる.初めに落としたスターターコードのファイル群の中にデフォルトで空白のrequirements.txtがあるので,中身に必要な物を追加していく.今回はとりあえず…
Django==1.9
1.9にしたのはローカル環境のdjangoが1.9だったからというだけです.
run.shも作成して同様にルートに置く.
#!/bin/bash
if [ -z "$VCAP_APP_PORT" ];
then SERVER_PORT=5000;
else SERVER_PORT="$VCAP_APP_PORT";
fi
echo port is $SERVER_PORT
python manage.py runserver --noreload 0.0.0.0:$SERVER_PORT

で,これでローカルで行けてんだからBluemix上でもいけるだろうと思ってたんですが,
Directory_listing_for__
いけませんでした.
なぜかディレクトリ一覧が出てくる(しかも何も入ってない)のでちょっと考えます.すいません.


Share Button

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.