BeagleBone BlackのファームウェアにAngstromを使う場合はデフォルトでWebブラウザ上で動作するIDEのCloud9がインストールされています。前回SDカードのUbuntu14.04.1にNode.jsとnpmをインストールしました。Cloud9の代わりにEclise Orionを使ってみます。OrionはCloud Foundryと連携が強化されIBM DevOps Servicesでも採用されています。
Eclipse Orionのインストール
Node.jsとnpmのバージョンを確認します。
$ node -v
v0.10.25
$ npm -v
1.3.10
CERT_NOT_YET_VALIDのエラーが発生する
orionをnpmでインストールしようとするとCERT_NOT_YET_VALID
エラーが発生しました。
$ npm install orion --production
npm http GET https://registry.npmjs.org/orion
npm http GET https://registry.npmjs.org/orion
npm http GET https://registry.npmjs.org/orion
npm ERR! Error: CERT_NOT_YET_VALID
npm ERR! at SecurePair.<anonymous> (tls.js:1370:32)
npm ERR! at SecurePair.EventEmitter.emit (events.js:92:17)
...
ntpdateで時間をあわせる
CERT_NOT_YET_VALIDのエラーは時間がずれていると発生するようです。BeagleBone Blackはバッテリを搭載していないため、電源を入れていないとシステムクロックがずれてしまいます。ntpdateをしてシステムクロックの時間をあわせます。
$ sudo ntpdate -b -s -u pool.ntp.org
インストールと起動
インストールし直します。
$ npm install orion --production
npm start
でOrionサーバーを起動します。
$ npm start orion
> orion@0.0.34 start /home/ubuntu/node_modules/orion
> node server.js
Could not find npm in the following locations:
/usr/bin/../lib/node_modules/npm/bin/npm-cli.js
/usr/bin/./node_modules/npm/bin/npm-cli.js
Please add or modify the npm_path in the orion.conf file and restart the server.
Using workspace: /home/ubuntu/node_modules/orion/.workspace
Listening on port 8081...
ブラウザでOrionの起動を確認します。
Orionをデモナイズ
一度Orionのプロセスを停止します。pm2にアプリを登録するスクリプトを実行します。
#!/bin/bash
read -d '' my_json <<_EOF_
{
"name" : "orion",
"script" : "/home/ubuntu/node_modules/orion/server.js"
}
_EOF_
echo $my_json | pm2 start -
pm2を開始してから、Cloud9を起動します。
$ chmod u+x pm2_orion.sh
$ ./pm2_orion.sh
[PM2] Process launched
┌──────────┬────┬──────┬──────┬────────┬───────────┬────────┬────────────┬──────────┐
│ App name │ id │ mode │ PID │ status │ restarted │ uptime │ memory │ watching │
├──────────┼────┼──────┼──────┼────────┼───────────┼────────┼────────────┼──────────┤
│ orion │ 1 │ fork │ 1898 │ online │ 0 │ 0s │ 4.117 MB │ disabled │
└──────────┴────┴──────┴──────┴────────┴───────────┴────────┴────────────┴──────────┘
Use `pm2 info <id|name>` to get more details about an app
OS再起動後もpm2に登録したプロセスが起動するようにinitスクリプトを作成します。
$ sudo pm2 startup ubuntu -u ubuntu
$ sudo /etc/init.d/pm2-init.sh restart
すでにinitスクリプトを作成している場合は、OS再起動後のためにプロセスをsaveします。
$ sudo pm2 save
[PM2] Dumping processes
hello world
Editor画面
簡単なNode.jsのスクリプトを作成して実行してみます。
Editorから「hello」フォルダを作成します。
- File > New > Folder > hello
helloフォルダを選択し、「world.js」ファイルを作成します。
- New > File > world.js
console.logのコードを書くと警告が表示されました。
console.log("hello world");
OrionはJavaScriptのバリデーションと文法チェックにESLintを採用しています。画面のガイドにしたがって、eslint-envディレクティブを追加します。
/*eslint-env node */
console.log("hello world");
Shell画面
左メニューからShellを選択します。画面下のコンソールから作成したスクリプトを実行します。
» node start hello.js