Node.jsアドベントカレンダー2021の9日目の記事です。
ラズパイでNode.jsを動かすをたまにやりますが、久々に触った時に忘れてることが多いので久々に触る時用にまとめておきます。
昔書いてた記事よりもシンプルでした。
ラズパイにNode.jsをインストール -> 永続化 -> 自動起動 みたいなところまでをやります。
事前準備
vimは使いたいのでインストールしておきます。
$ sudo apt update -y
$ sudo apt upgrate -y
$ sudo apt install vim -y
nodebrewでNode.jsのインストール
Node.jsをnodebrew経由でインストールします。
nodebrewのインストール
$ curl -L git.io/nodebrew | perl - setup
パスを通します。
$ vim ~/.bashrc
export PATH=
HOME/.nodebrew/current/bin:HOME/.nodebrew/current/bin:
PATH
これを追記。
$ source ~/.bashrc
これでnodebrewのインストール完了です。
Node.jsのインストール
$ nodebrew install-binary latest
$ nodebrew use latest
use v17.1.0
最新版がインストールできました。
$ node -v
v17.1.0
$ npm -v
8.1.2
PM2で自動起動と永続化
古き良きなのか昔からPM2を使って永続化をしています。
$ npm i -g pm2
これでpm2がインストールできます。
PM2で永続化
- app.jsを永続化
$ pm2 start app.js
- 永続化の確認
$ pm2 list
PM2で自動起動設定
永続化だけだとラズパイが再起動したときに起動してくれないので、自動起動の設定もします。
pm2 startup
を実行することで、その環境(今回だとラズパイ/ラズビアンOS)でどのコマンドを実行すると良いかを教えてくれます。pm2 startup
を実行するだけではダメなので注意。
$ pm2 startup
[PM2] Init System found: systemd
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/home/pi/.nodebrew/node/v17.1.0/bin /home/pi/.nodebrew/node/v17.1.0/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi
表示されたコマンドをコピペで実行します。
$ sudo env PATH=$PATH:/home/pi/.nodebrew/node/v17.1.0/bin /home/pi/.nodebrew/node/v17.1.0/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi
実行すると色々表示されますが、Command successfully
と出てるので成功っぽいです。
・
・
・
[PM2] Writing init configuration in /etc/systemd/system/pm2-pi.service
[PM2] Making script booting at startup...
[PM2] [-] Executing: systemctl enable pm2-pi...
Created symlink /etc/systemd/system/multi-user.target.wants/pm2-pi.service → /etc/systemd/system/pm2-pi.service.
[PM2] [v] Command successfully executed.
最後にpm2 save
をすることで設定が保存されます。
$ pm2 save
[PM2] Saving current process list...
[PM2] Successfully saved in /home/pi/.pm2/dump.pm2
ここまでで自動起動の設定になるっぽいのでpm2 save
まで実行しておきましょう。
再度に再起動して完了です。
$ sudo reboot
たぶん問題なくapp.js
のプロセスが実行されてると思います。
- 自動起動を解除するとき
これは環境によってことなりそうですが、ラズパイの場合は以下でOKな気がします。
$ pm2 unstartup systemd
まとめ
- vimをインストールしておく
- nodebrew経由でNode.jsをインストール
- PM2で永続化 & 自動起動設定
という流れで個人的によく使うラズパイ運用はカバーできそうな気がしました。
pm2 startup
は このコマンドを実行するだけではダメってのがいつも忘れそうになるポイントですね。
基本自分用ですが、誰かの参考になれば幸いです。