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