LoginSignup
2
1

More than 5 years have passed since last update.

IBM Bluemix KinetiseでMobile Applicaiton開発(3)

Last updated at Posted at 2015-12-19

前回からの続きで、BluemixのPythonランタイムへのデプロイについて説明します。基本的にはDeveloperWorksの記事を参考にしています。

4. BluemixのPythonランタイムへのデプロイ
4.1. cfコマンドをインストール、Bluemixに接続します。手順はこちらです。

cf api https://api.ng.bluemix.net
cf login -u アカウント -o 組織 -s 空間

4.2. pushするパッケージを作成するため、C:\Users\hoge\workspace_env3\kinetiseを同じディレクトリにコピーしてbmaakinetaiseとし、仮想環境(env3)のLib\site-packages\rf_alter_apiフォルダをbmaakinetaiseフォルダにコピーします。rf_alter_apiはgithubで入手できないからです。そして、以下のファイルを作成します。すべてSJISで動作します。

4.2.1. requirements.txtにはPythonランタイムをデプロイする際に組み込まれるモジュールを記述します。このファイルには、Pythonと、動作確認できている仮想環境(env3)でのpip freeze -lを実行結果を、記述します。そして、今までの作業で使用したPythonのバージョンがgithubのpython-buildpack/builds/runtimes/に含まれることを確認します。

requirements.txt
Python==2.7.10
Django==1.9
django-filter==0.11.0
djangorestframework==3.3.2
drf-extensions==0.2.8
Markdown==2.6.5
wheel==0.24.0
yattag==1.5.2

(補足) cf pushのデプロイ時のコンソールで、実際に使用されているPythonのバージョンを識別することができます。正常にデプロイできない場合、問題の切り分けが複雑になるのを回避するために、含まれるバージョンを導入し、最初からここまでの作業をやり直してください。この記事の作業では、最初はPython 2.7.11を使用して作業していましたが、buildpackに含まれるのは2.7.10まででしたので、やり直しています(2015年12月時点)。また、requirement.txtなどと、不正確なファイル名(requirementではなくrequirements、つまり末尾のsが足りません)だとcfコマンドは動作しますが、デプロイ時にエラー(Directory '.' is not installable. File 'setup.py' not found.)になりますので注意してください。なお、Python==2.7.10の記述がなくても正常にデプロイされます。単純に、メモとして記述しています。

4.2.2. bluemixはGB時間で課金されます。manifest.ymlでは、デプロイするpythonランタイムに割り当てるメモリ量と、pythonのbuildpackを指定します。

manifest.yml
---
applications:
- name: bmaakinetise
  memory: 512M
  command: bash run.sh
  buildpack:  https://github.com/cloudfoundry/python-buildpack

(補足) run.shはbashシェルで記述しているので、command: bash run.shとしています。command: sh run.shでも、run.sh内部で#!/bin/bashと宣言しているので動作しますが、bashならbashで統一したほうがよいと考えています。

4.2.3. run.shではPORTの指定や、デプロイ時に実行するシェルを記述します。今回のケースでは、デプロイがエラー終了するのを回避するため、kinetiseが提供しているrf_alter_apiを明示的にPYTHONPATHに含めています。追加しているパスは、デプロイ時のエラー(module not found)のメッセージを参考にしています。pipでインストールできないカスタムモジュールの使用方法として参考になると思います。

run.sh
#!/bin/bash
PYTHONPATH="/home/vcap/app/kinetise/:$PYTHONPATH"
export PYTHONPATH
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

(補足) PYTHONPATHの記述がなくても正常にPythonランタイムが動作する場合がありますが、問題の切り分けのために明示的に記述しています。

4.2.4 bmaakinetiseフォルダは以下のようになっています。

コマンドのログ
 C:\Users\hoge\workspace_env3\bmaakinetise のディレクトリ

2015/12/18  19:06    <DIR>          .
2015/12/18  19:06    <DIR>          ..
2015/12/18  15:23               436 .project
2015/12/18  15:23               604 .pydevproject
2015/12/18  18:25    <DIR>          .settings
2015/12/18  18:25    <DIR>          comments
2015/12/18  17:31            38,912 db.sqlite3
2015/12/18  18:25    <DIR>          kinetise
2015/12/18  15:23               251 manage.py
2015/11/23  22:19               137 manifest.yml
2015/12/18  18:56               151 requirement.txt
2015/11/23  19:41               186 run.sh

4.3. cfコマンドでデプロイします。

コマンドのログ
(env3) C:\Users\hoge\workspace_env3\bmaakinetise>cf push  --no-start
Using manifest file C:\Users\hoge\workspace_env3\bmaakinetise\manifest.yml

Creating app bmaakinetise in org hoge@hoge.com / space dev as hoge@hoge.com...
OK

Creating route bmaakinetise.mybluemix.net...
OK

Binding bmaakinetise.mybluemix.net to bmaakinetise...
OK

Uploading bmaakinetise...
Uploading app files from: C:\Users\hoge\workspace_env3\bmaakinetise
Uploading 60.7K, 32 files
Done uploading
OK

4.4. bluemixのダッシュボードでデプロイしたpythonランタイムを起動し、前回同様に、bluemixが割り当てたURLを使用してPOSTMANで同様の動作確認をします。

これで、BluemixのPythonランタイムへのデプロイについての説明は終了です。次はKinetiseでMobile Applicationの開発とビルドを説明します。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1