NVMによるNode.jsとNode-REDのインストール方法
2019-07-10
こんにちは、Lazuriteの開発者一号です。
nvmでNode.jsのバージョンを管理しつつ、Node-REDをインストールし、さらにそれをdaemonで起動する方法を調べていたらできたので、その方法をまとめました。動かない場合も自己責任でお願いします。
nvmのインストールはnvmの公式サイトを参照してください。
ここでインストールしたNode.jsのバージョンでNode-REDを動かして、さらにdaemon起動できる状態にしていきます。
Node-REDのインストール
インストールはこれだけ
[code language=”bash”]
npm install node-red
[/code]
Node-REDの起動方法
Raspberry Piの場合、Node-REDの起動は以下のコマンドで実行できます。
[code language=”bash”]
node –max-old-space-size=128 /home/pi/node_modules/node-red/red.js
[/code]
.bash_aliasなどに以下の一文を追加しておくと、通常通り使用できます。
[code language=”bash”]
alias node-red=’node –max-old-space-size=128 node_modules/node-red/red.js’
[/code]
daemon起動をする設定
通常、daemon起動をすると管理者権限で実行されます。nvmではpiユーザにしか設定をしませんので、通常のnodered.serviceを読み込ませると、「npmコマンドが見つかりません」というメッセージが表示され、「パレットの管理」のメニューが表示されません。
[code language=”bash”]
Jul 9 17:40:25 raspberrypi Node-RED[6405]: 9 Jul 17:40:25 – [info] パレットエディタを無効化 : npmコマンドが見つかりません
[/code]
rootにもnvmをインストールすれば解決するのですがスマートではないので、systemctlが参照するPATHに、npmがインストールされているPATHを参照させます。
以下のようなコマンドでPATHを出力して、PATHの指定をするファイルを作成します。
[code language=”bash”]
echo $PATH
[/code]
作成したファイルがこちら
[code language=”bash”]
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
[/code]
作成したPATHの設定ファイルを、nodered.serviceのEnvironmentFileのパラメータで指定します。
[code language=”bash” file=”/etc/systemd/system/nodered.service”]
[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
[/code]
sudo systemctl start noderedでdaemon起動すれば、npmのPATHも設定されているので、正常に動作します。
Raspberry Piを起動時にnode-redを起動したい時:
sudo systemctl enable nodered
手動でnode-redをdaemon起動したい時:
sudo systemctl start nodered