Armadillo-IoTとHeroku(Node.js)でHello Worldをやってみましたので、 その際の作業手順をまとめてみます。
1. ATDE5にnode.jsをインストール
ここではATDE5でNode.jsを動かすために、Node.jsをインストールします。(ローカルで動作させる環境が不要な場合はこの章の手順は不要です)
Node.jsのパッケージ(nodejs, nodejs-legacy)は、ATDE5のベースであるDebian wheezyにはパッケージがありません。そのためbackportから取ってくる必要があります。
ここでは以下のURLを参考にATDE5にNode.jsをインストールします。
- http://kotak.hatenablog.com/entry/2014/06/18/190500
まずは/etc/apt/sources.list.d/backports.listファイルを以下の内容で作成してください。
deb http://ftp.jp.debian.org/debian/ wheezy-backports main contrib non-free deb-src http://ftp.jp.debian.org/debian/ wheezy-backports main contrib non-free
上記のファイルを追加したら、以下のコマンドを実行し、Node.jsとNode.jsのパッケージ管理ツールであるnpmをインストールしてください。
[atde ~]$ sudo apt-get update [atde ~]$ sudo apt-get install nodejs nodejs-legacy [atde ~]$ curl -L https://npmjs.org/install.sh | sudo sh
2. Herokuの使用準備
以下のURLでHerokuのアカウントを作成してください。
- https://id.heroku.com/login
以下のURLを参考にしHeroku toolbeltをインストールします。
- https://toolbelt.heroku.com/
以下のコマンドを実行し、toolbeltをATDE5にインストールしてください。
[atde ~]$ wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh
3. Node.jsアプリ(Armadilloとの連携なし)を作成し、動作確認
以下のように、どこかに適当なディレクトリ(ここでは~/temp/myapp)を作成し、そこに移動してください。
[atde ~]$ mkdir -p ~/temp/myapp [atde ~]$ cd ~/temp/myapp
app.js(Node.jsアプリ)というファイルを、以下の内容で作成してください。
var express = require('express'); var app = express(); app.set('port', (process.env.PORT || 5000)); app.use(express.static(__dirname + '/public')); app.get('/', function(request, response) { response.send('Hello World!'); }); app.listen(app.get('port'), function() { console.log("Node app is running at localhost:" + app.get('port')); });
Procfile(Herokuの設定)というファイルを、以下の内容で作成してください。
web: node app.js
package.json(依存関係などの設定を記述)というファイルを、以下の内容で作成してください。
{ "name": "myapp", "version": "1.0.0", "description": "", "main": "app.js", "scripts": { "test": "echo \\"Error: no test specified\\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "express": "^4.11.2" }, "engines": { "node": "0.10.29", "npm": "2.5.1" } }
以下のコマンドを実行して、Herokuにアップロードし、動作させるようにしてください。
[atde ~/temp/myapp]$ git init [atde ~/temp/myapp]$ git add . [atde ~/temp/myapp]$ git commit -m "initial commit." [atde ~/temp/myapp]$ heroku create [atde ~/temp/myapp]$ git push heroku master:master [atde ~/temp/myapp]$ heroku ps:scale web=1
git pushコマンドを実行すると、最後に下記のようなメッセージがでます。
remote: -----> Compressing... done, 6.1MB remote: -----> Launching... done, v3 remote: https://powerful-garden-4275.herokuapp.com/ deployed to Heroku remote: remote: Verifying deploy... done. To https://git.heroku.com/powerful-garden-4275.git * [new branch] master -> master
上記の"https://powerful-garden-4275.herokuapp.com/"と出ているところに、ブラウザでアクセスすると「Hello World!」と表示されます。(URLは毎回変わります)
4. Node.jsアプリ(Armadilloとの連携)を作成し、動作確認
4.1. Node.jsアプリ側の修正
app.jsを以下の様に修正してください。
var express = require('express'); var bodyParser = require('body-parser'); var app = express(); app.set('port', (process.env.PORT || 5000)); app.use(express.static(__dirname + '/public')); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); app.get('/', function(request, response) { response.send('Hello World!'); }); app.post('/series', function(req, res) { console.log('post:/series'); res.send(req.body.data); }); app.listen(app.get('port'), function() { console.log("Node app is running at localhost:" + app.get('port')); });
package.jsonファイルに以下の1行を追加してください。
"dependencies": { "body-parser": "^1.12.0", ←の行を追加する "express": "^4.11.2" },
以下のコマンドを実行して、Herokuにアップロードしてください。
[atde ~/temp/myapp]$ git add . [atde ~/temp/myapp]$ git commit -m "add receive data." [atde ~/temp/myapp]$ git push heroku master:master
4.2. Armadillo側からのデータ送信と動作確認
Armadilloをインターネットに繋がる環境にして、以下のコマンドを実行してください。
[armadillo ~]# wget -O- -q --post-data="data=Hello World" https://powerful-garden-4275.herokuapp.com/series
※: URLは動作確認の環境により、読み替えてください。
上記コマンドを実行すると、以下の結果が帰ってきます。
Hello World