さくらのクラウドにインストールしたNode-RED環境に2つ目のNode-REDを入れるメモです。
背景
おおむね、さくらのクラウドにインストールしたNode-RED環境をベースに、2つ目のNode-REDを入れるにはどうするかということをお伝えします。1つ目のNode-REDはスタートアップスクリプトで入るので手軽だったのですが、ちょっとしたことで悩みました。
また、ムームードメインでDNSの紐づけも行っています。
pm2 コマンドに目をつけて同じコマンドを実行→この複数起動は失敗
スタートアップスクリプトでは、pm2で常駐起動させているので、便乗しようと思いました。
リファレンス を見つつ以下のコマンドにしてみました。
pm2 start /usr/bin/node-red -- -v -u root -p 18801 --name "node-red-18801"
/usr/bin/node-red
で Node-RED が起動しているので、ポートは 18801 で起動しようとしています。
[PM2][ERROR] Script already launched, add -f option to force re-execution
しかし、実行してみると、すでに起動しているので複数起動ダメと言われてしまいました。 -f で強制起動できそうですが、ちょっと運用大変そうなので別のアプローチにしました。
別のフォルダにNode-REDをインストール
同じコマンドで頑張るのは大変そうなので、完全に別でインストールをすることにしました。
sudo mkdir /root/sub-node-red
新しいフォルダ sub-node-red
を作ります。
cd /root/sub-node-red
sub-node-red
フォルダに移動します。
npm init
npm の初期準備を行って。
npm install --unsafe-perm node-red
Node-REDのインストールをします。 -g
はつけずに、このフォルダ内で動くようにします。
新しく起動するポートを開けておく
firewall-cmd --add-port=18801/tcp --permanent firewall-cmd --reload
こちらで 18801 ポートを開けておきましょう。
単体起動で試す
一旦、起動してみます。まだ pm2 で常駐はしません。
node /root/sub-node-red/node_modules/node-red/red.js -u /root/sub-node-red -p 18801
直接、 red.js
を起動するやり方です。
無事起動しまして。アクセスもできました!
ということでいったん終了します。
pm2 で常駐に組み込み
先ほどの実行したコマンドを元に pm2 で起動します。
pm2 start /root/sub-node-red/node_modules/node-red/red.js --name node-red-sub -- -v -u /root/sub-node-red -p 18801
このようなコマンドになりました。実行すると、先ほどと同じく起動できます。
pm2 save
あとは上記のコマンドで現在の実行状況を pm2 で保存します。
これで作業は完了です!
新しく作った Node-RED のほうは、HTTPS通信の設定が出来てません。こちらの記事を見ながら、必要に応じて設定します。私の場合は、このNode-REDをLINE Botに使いたかったので、設定しました。