×

NVMによるNode.jsとNode-REDのインストール方法

2019-07-10

こんにちは、Lazuriteの開発者一号です。
nvmでNode.jsのバージョンを管理しつつ、Node-REDをインストールし、さらにそれをdaemonで起動する方法を調べていたらできたので、その方法をまとめました。動かない場合も自己責任でお願いします。

nvmのインストールはnvmの公式サイトを参照してください。
ここでインストールしたNode.jsのバージョンでNode-REDを動かして、さらにdaemon起動できる状態にしていきます。

Node-REDのインストール

インストールはこれだけ

npm install node-red

Node-REDの起動方法

Raspberry Piの場合、Node-REDの起動は以下のコマンドで実行できます。

 node --max-old-space-size=128 /home/pi/node_modules/node-red/red.js

.bash_aliasなどに以下の一文を追加しておくと、通常通り使用できます。

 
alias node-red='node --max-old-space-size=128 node_modules/node-red/red.js'

daemon起動をする設定

通常、daemon起動をすると管理者権限で実行されます。nvmではpiユーザにしか設定をしませんので、通常のnodered.serviceを読み込ませると、「npmコマンドが見つかりません」というメッセージが表示され、「パレットの管理」のメニューが表示されません。

 
Jul 9 17:40:25 raspberrypi Node-RED[6405]: 9 Jul 17:40:25 - [info] パレットエディタを無効化 : npmコマンドが見つかりません

rootにもnvmをインストールすれば解決するのですがスマートではないので、systemctlが参照するPATHに、npmがインストールされているPATHを参照させます。

以下のようなコマンドでPATHを出力して、PATHの指定をするファイルを作成します。

 
echo $PATH

作成したファイルがこちら

 
PATH=/home/pi/.config/versions/node/v10.16.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games

作成したPATHの設定ファイルを、nodered.serviceのEnvironmentFileのパラメータで指定します。

 
[Unit]
After=network-online.target
Documentation=http://nodered.org/

[Service]
Environment="NODE_OPTIONS=--max-old-space-size=128"
#Environment="NODE_RED_OPTIONS=-v"
EnvironmentFile=/home/pi/pi.conf
ExecStart=/home/pi/.config/versions/node/v10.16.0/bin/node $NODE_OPTIONS /home/pi/node_modules/node-red/red.js $NODE_RED_OPTIONS
WorkingDirectory=/home/pi/.node-red/
User=pi
Group=pi
Nice=10
SyslogIdentifier=Node-RED
StandardOutput=syslog
Restart=on-failure
KillSignal=SIGINT

[Install]
WantedBy=network-online.target

sudo systemctl start noderedでdaemon起動すれば、npmのPATHも設定されているので、正常に動作します。

Raspberry Piを起動時にnode-redを起動したい時:

sudo systemctl enable nodered

手動でnode-redをdaemon起動したい時:

sudo systemctl start nodered