nvmでNode.jsのバージョンを管理しつつ、Node-REDをインストールして、daemon起動する方法のメモです。
nvmのインストールはnvmの公式サイトを参照してください。
ここでインストールしたNode.jsのバージョンでNode-REDを動かして、さらにdaemon起動できる状態にしていきます。
Node-REDのインストール
インストールはこれだけ
npm install -g node-red
Node-REDの起動方法
Raspberry Piの場合:
node-red
daemon起動をする
通常の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
作成したファイルがこちら
(gamesはいらないだろ...)
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.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.target
sudo systemctl start nodered
でdaemon起動すれば、npmのPATHも設定されているので、正常に動作します。
2020.5.20:
2020-02-13-rasbian-buster
のカーネルではnetwork-online.target
の設定だと電源起動時に自動起動しないためnetwork.target
に変更しました。