10
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Node.jsAdvent Calendar 2021

Day 9

Raspberry PiにNode.jsのインストールをして起動時に自動実行させるまで

Last updated at Posted at 2021-12-09

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このコマンドを実行するだけではダメってのがいつも忘れそうになるポイントですね。

基本自分用ですが、誰かの参考になれば幸いです。

10
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?