ラズパイにNodejs を入れてWebサーバにする
やること概要
● ラズパイ(ラズベリーパイ)をWEBサーバーにします。
● Windowsパソコンからブラウザでアクセスします。
● ラズパイをWEBサーバにする方法
ー Nodejs をインストールします。
ー Nodejsの拡張機能も入れておきます。
環境
Windowsパソコンとラズパイがネットワークでつながっている環境を用意します。
※ラズパイにNodejsをインストールしてWEBサーバにします。
※この環境の作り方については、下にある「参考」に書いてあります。
構築 1-1:nodejsをインストールします。
ラズパイにアクセスしてNodejsをインストールします。
$ sudo apt-get update
$ sudo apt-get install nodejs
$ sudo apt-get install npm
$ sudo update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10
構築 1-2:拡張機能を使えるようにします。
$ npm install require
構築 2:さっそく動くものを作ってみます。
ディレクトリ /data/nodejs/01-hello をつくって、その下にexample.js ファイルを作成します。
const http = require('http');
const PORT = 8808;
http.createServer((request, response) => {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end('Hello Nodejs');
}).listen(PORT);
console.log(`Server running at http://localhost:${PORT}/`);
実行画面はこんな感じです。
起動してみます。
$ node example.js
実行画面はこんな感じです。
本当に起動したのか確認するために、Windows パソコンからWebブラウザでアクセスしてみます。
http://{ラズパイのIPアドレス or ホスト名}:8808/
↓ こんな風に表示されれば成功です。
(動かないとき→ トラブルシュート(*1))
構築 3 : WEBサーバーを作ります。
WEBサーバ用のディレクトリ( /data/nodejs/02 ) を作ります。
$ mkdir /data/nodejs/02
express をインストールします。
$ sudo npm install -g express
$ export NODE_PATH=/usr/local/lib/node_modules
ディレクトリ配下にファイル(exsample.js , wwwroot/index.html)を作ります。
exsample.js
var express = require('express');
var app = express();
app.use(express.static('wwwroot'));
var port = 3000;
app.listen(port,function(){
console.log("サーバがポート%dで起動しました。モード:%s",port,app.settings.env)
});
index.html
<html>
<head>
<title>nodejsでindex.html</title>
</head>
<body>
こんにちはnodejs こちらはindex.html です
</body>
</html>
ファイルの準備ができたら、初期化します。初期化コマンド(npm init)は、WEBサーバ用のディレクトリをカレントディレクトで実行します。
$ pwd
/home/newpi/data/nodejs/02
$ npm init
これで準備は完了しました。起動してみます。
$ node exsample02.js
サーバがポート3000で起動しました。モード:development
起動したら、Windowsパソコンでブラウザを開いてアクセスしてみます。
http://{ラズパイのホスト名 or IPアドレス}
↓ こんな風に表示されたら成功です。
参考
ラズパイOSのインストールがしたい
→ モニタ/キーボードを接続しないでラズパイにOSをインストールする
ラズパイOSの初期設定がしたい
→ ラズパイOSの初期設定がしたい!
Nodejsインストールについて参考させて頂いたサイト
トラブルシュート
(*1) WEBサイトが開かない
<考えられること>
● URLが間違えている → ホスト名などチェックしてみる
● ポート番号が間違えている → exmaple2.js の指定ポート番号を確認する
● ホスト名の名前解決ができない → IPにしてみる
(*2) Error: Cannot find module ‘express’ とエラーが出て動かない
$ node exmaple2.js
module.js:549
throw err;
^
Error: Cannot find module 'express'
at Function.Module._resolveFilename (module.js:547:15)
at Function.Module._load (module.js:474:25)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/home/newpi/data/nodejs/02/exmaple2.js:1:77)
at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
<考えられること>
● express がインストールできていない
→ sudo npm install -g express を実行してみる
● express へのパスが通っていない
→ export NODE_PATH=/usr/local/lib/node_modules でパスを通してみる
さいごに
ラズパイをWEBサーバにする方法を紹介しました。テスト環境として使うなど、ちょっと使いたいときに便利だと思います。誰かのお役に立てば幸いです。
こんな弱小ブログでもサポートしてくれる人がいることに感謝です。