RaspberryPiにnode.jsをインストールして、node.jsを動かします。
【手順】
- 「node.js」のインストール
- もっと簡単に「node.js」のインストール
- 「npm」のインストール
- 「Socket.IO」のインストール
- Hello World!!してみる
- Expressを使ってHello World!!してみる
- デーモン化してみる
node.jsのインストール
aptからインストールすると、バージョンが古い(v0.6.19)のでソースからインストールします。
2015年3月現在の最新評価版はv0.11.15ですので、このバージョンをインストールします。
最新のバージョンはWikipediaで確認するのが手っ取り早いです。
node.jsのディストリビューションの一覧は下記から確認できます。
https://nodejs.org/dist/
まずはNode.jsのビルドに必要なパッケージをaptでインストール
$ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get install build-essential $ sudo apt-get install libssl-dev $ sudo apt-get install libv8-3.8.9.20 libv8-dbg libv8-devpacoがインストールされていない場合はインストールします。
$ sudo apt-get install paco
node.jsをインストールしていきますが、ここで以下の問題が。
Error Compiling Armv6 (Raspberry Pi B+) #9163
そのままコンパイルしようとするとGoogle V8 JavaScript Engineのsnapshot.ccのコンパイルでエラーが発生してしまいます。 ですので、configureにオプションで「--without-snapshot」を付けてsnapshotを対象外にしてインストールすることにします。
node.jsのソースを取得し、ビルド、コンパイル、インストールします。
makeに数分かかります。ソースのバージョンは適宜変更してください。
$ cd /tmp $ sudo wget https://nodejs.org/dist/v0.11.15/node-v0.11.15.tar.gz $ sudo tar zxvf node-v0.11.15.tar.gz $ cd node-v0.11.15 $ sudo ./configure --without-snapshot $ sudo make $ sudo paco -lD "make install"
下記コマンドを打ってバージョンが表示されれば、無事インストールされています。
$ node -v
もっと簡単に「node.js」のインストール
実は下記の「node-arm」というのを使って簡単にインストールできます。
http://node-arm.herokuapp.com/
node-armと言うのは、「An easy way to install node.js on the Raspberry Pi」(RaspberryPiに簡単にnode.jsをインストールする)とホームページに説明が書いてある通り、簡単にnode.jsをインストールできちゃいます。
$ sudo wget http://node-arm.herokuapp.com/node_latest_armhf.deb # ディストリビューションの取得 $ sudo dpkg -i node_latest_armhf.deb # インストール $ node -v # インストールの確認
「npm」のインストール
Node.jsのパッケージを管理する「npm(node package manager)」をインストールします。
(インストールに数分かかります)
$ cd /tmp $ sudo wget http://npmjs.org/install.sh $ sudo ./install.shインストールが成功すれば、下記コマンドでバージョンが表示されます。
$ npm -vとりあえずsocket.ioをインストールしてみます。(インストールに数分かかります)
[-g]オプションをつけると、グローバルにインストールされます。付けないと、カレントディレクトリにインストールされます。
$ sudo npm install -g socket.io # インストール後の確認 $ sudo npm list -g他にも、いろんなパッケージがあるので、必要に応じてインストールしてみてください。
Hello World!!してみる
適当なディレクトリで、「helloworld.js」というファイルを作り、以下のように編集します。
$ cd ~ $ sudo vi helloworld.js
var http = require('http'); var server = http.createServer( function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.write('Hello World!!\n'); res.end(); } ).listen(3000);保存したら、nodeコマンドで先ほどの「helloworld.js」を指定します。
$ node helloworld.jsWEBブラウザを開き、以下のアドレスを入力すると、ブラウザに「Hello World!!」と表示されます!
● RaspberryPiのブラウザからアクセスする場合「http://127.0.0.1:3000/」
● リモートでアクセス「http://RaspberryPiのIPアドレス:3000/」
Expressを使ってHello World!!してみる
せっかくなので Express というフレームワークを使ってみます。
まずはnpmでExpressをインストールします。 Expressをインストールしたら、「helloworld_exp.js」というファイルを作り、編集していきます。
$ sudo npm install -g express $ cd ~ $ sudo vi helloworld_exp.js
require.main.paths.push('/usr/local/lib/node_modules'); var express = require('express'); var app = express(); app.get('/', function (req, res) { res.send('Hello, World Express!!'); }); app.listen(3000);保存したら、nodeコマンドで実行しブラウザからアクセスすると「Hello, World Express!!」と表示されます。
$ node helloworld_exp.js● RaspberryPiのブラウザからアクセスする場合「http://127.0.0.1:3000/」
● リモートでアクセス「http://RaspberryPiのIPアドレス:3000/」
デーモン化してみる
前項で作った、「helloworld.js」をSupervisorを使ってデーモン化してみます。
まずはこちらのエントリーを参照し、Supervisorをインストールしてください。
Raspberry Piに【Supervisor】をインストールして、motionをデーモン化してみた
Supervisorのhelloworld.js 用の設定ファイルを作成します。
$ sudo vi /etc/supervisor/conf.d/node_helloworld.conf
/etc/supervisor/conf.d/node_helloworld.conf [program:helloworld] command=/usr/local/bin/node /home/pi/helloworld.js numprocs=1 redirect_stderr=true stdout_logfile=/var/log/helloworld.log user=pi
# 設定、再読込 $ sudo supervisorctl reread helloworld: available # helloworldプロセスを追加→起動 $ sudo supervisorctl add helloworld helloworld: added process group # 起動確認 $ sudo supervisorctl status helloworld RUNNING pid 26200, uptime 0:00:11
プロセスが起動したら、ブラウザからアクセスします。無事に「Hello World!!」と表示されればOKです。
● RaspberryPiのブラウザからアクセスする場合「http://127.0.0.1:3000/」
● リモートでアクセス「http://RaspberryPiのIPアドレス:3000/」
※ ちなみに、今回はSupervisorを使いましたが、node.jsのデーモン化は、「forever」や「pm2」を使うのが一般的なようですのでこちらも試してみてください。
タグ:Raspberry Pi