知っている人は疑いなく実現できるからかこれぞという情報があるようなないようなカンジで、知らない人はどうやるんだか見当がつきにくい。
johnny-five とか pm2 とかはじめてだし! という私のような方向け。
pm2で自動化を試みて、以下のようなエラーが発生した場合、
(具体的には raspi-io を new したときに発生する)
$ pm2 start app.js --name hoge
API server started on: 5001
fs.js:119
throw err;
^
Error: EACCES: permission denied, open '/sys/class/leds/led0/trigger'
rootユーザのパスワードを設定して、suしてから同操作を行えばよいよ、という話。
root にパスワードを設定。
$ sudo passwd root
su してrootになる。
$ su
パスワード:
pm2 で自動化設定。
pm2のインストール
# npm i -g pm2
起動
# /usr/local/lib/nodejs/node-v11.14.0-linux-armv7l/bin/pm2 start app.js --name hoge
# /usr/local/lib/nodejs/node-v11.14.0-linux-armv7l/bin/pm2 save
再起動し、自動起動していることを確認。
おしまい。
#####おまけ、実行した環境。
$ uname -a
Linux raspberrypi02 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 9.8 (stretch)
Release: 9.8
Codename: stretch
$ node -v
v11.14.0
$ npm -v
6.9.0
$ pm2 -v
3.5.0
####2020/05/29追記:
#####Error: EACCES: permission denied, open '/root/.pm2/module_conf.json'
Raspi4を入手したので試してみたら、同じ要領で実行してエラーになった。
$ uname -a
Linux raspberrypi 5.4.42-v7l+ #1319 SMP Wed May 20 14:12:03 BST 2020 armv7l GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 10 (buster)
Release: 10
Codename: buster
$ node -v
v13.14.0
$ npm -v
6.13.4
$ pm2 -v
4.4.0
コマンドのオプションでユーザ指定して解消。
# pm2 start app.js --name hs-node1 --user root
# pm2 startup --user root
先に試した時は、オプション指定せずに実行して、次のサービスが作成された。
/etc/systemd/system/pm2-root.service
今回、同じコマンドを実行して、次のサービスが作成された。
/etc/systemd/system/pm2-pi.service
「--user root」を指定すると、「/etc/systemd/system/pm2-root.service」が作成される。