うずまき2017 powered by Jun-Systems

耳管開放症, SAS, 統計解析, 人工知能, プログラミングそれに思考

*

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

   

まず,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__
いけませんでした.
なぜかディレクトリ一覧が出てくる(しかも何も入ってない)のでちょっと考えます.すいません.


 - Bluemix, Cloud Foundry Apps , , , ,

Message

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

  関連記事