Tornado/Heroku編の複数同時中継可能なサーバを、IBM Cloudのライト・アカウントで動かしてみます。今回もUbuntu16.04で作業しました。
手順
(1) Cloud Foundryアプリの作成
Python/Tornadoのプログラムを動かすためには、カタログからCloud Foundry アプリのPythonを選択し、名前を決めて作成します。ここではpaperoi-relay-serverとします。同じ名前では作成できないので独自の名前を決め、以後読み替えてください。メモリは256Mまで指定できますが、64Mとしました。
(2) CLIインストール
アプリを作成すると表示される「開始」ページの、「Bluemixコマンド・ライン・インターフェースのダウンロード」ボタンからインストーラーをダウンロードして表示されている手順通りに実行します。bxコマンドが使用できるようになります。
(3) ログイン
bx login
(4) ターゲットの指定
bx target –cf
(5) ファイルの用意
新しいディレクトリを作成して必要なファイルを用意します。
Procfile:
web: python wsrelaysvr.py –port=$PORT
manifest.yml:
applications:
– name: paperoi-relay-server
random-route: true
memory: 64M
requirements.txt:
tornado==4.5.3
runtime.txt
python-3.6.2
setup.py:
setup(
name=’paperoi-relay-server’,
version=’0.0.0′,
description=’paperoi relay server’,
)
wsrelaysvr.py:
Tornado/Heroku編と同じ。
(6) デプロイ
bx app push paperoi-relay-server
(7) アプリの停止
bx app stop paperoi-relay-server
(8) アプリの起動
bx app start paperoi-relay-server
(9) アプリの状態表示
bx app list
補足
- できてしまえば簡単ですが、意外に情報が検索し辛く苦労しました。Cloud FoundryはOSSのPaaS基盤でAzureなどでも採用されているそうで、そのオリジナルのcfコマンドの使用例が見つかるのですが、IBM Cloudでは現在はbxコマンドを使うということの様です。
- IBM CloudではWebSocketコネクションは約2分使われないと切断される様でした。パペロアプリは定期的にキープアライブパケット(send_get_led_status等が良いと思います)を送信する機能を実装する必要があります。