[Sy] Node.jsを「n」でアップグレードする手順
n
というモジュールをnpm
でインストールしてNode.js
のアップグレードを行う手順です。
開発環境ではnvm
とかnodebrew
とか使って複数バージョンのNode.js
を管理して、アプリごとに切り替えるようにしてますが、どちらも使っていない環境でNode.js
のバージョンを上げることがあって、n
というモジュールをnpm
でインストールしてアップグレードする方法があることを知ったのでやってみました。その時の手順です。
この記事を参考にしてます。
⇒ npmでnode.jsのアップグレード - Qiita1. キャッシュ削除
まずはキャッシュ?を一旦きれいにします。
$ sudo npm cache clean -f
npm WARN using --force I sure hope you know what you are doing.
2. nをインストール
npm
を使ってn
というモジュールをインストールします。
$ sudo npm install -g n
/usr/bin/n -> /usr/lib/node_modules/n/bin/n
n@2.0.1 /usr/lib/node_modules/n
n
についての説明はここがわかりやすかったです。
nvm
とかと違って、一応バージョンごとに複数管理できるけども、nodeバイナリを使用したいバージョンのものに置き換えるという方法なので、同時に複数バージョンを扱えるというものではない という点に注意ですね。
3. アップグレードしたいバージョンのバイナリをインストール+切り替え
n
をインストールできたら、最新版のnodeバイナリをインストールして切り替えます。
以下コマンドで、そのバージョンがインストールされてなければ「インストール+切り替え」、インストールされていれば「切り替え」のみが行われるようです。
$ sudo n stable
install : node-v0.12.7
mkdir : /usr/local/n/versions/node/0.12.7
fetch : https://nodejs.org/dist/v0.12.7/node-v0.12.7-linux-x64.tar.gz
・
・
・
installed : v0.12.7
バージョンを確認すると、ちゃんと切り替えられています。
$ node --version
v0.12.7
(おまけ)稼働中のアプリがある場合のアップグレード
n
を使ったアップグレードをしながら、forever
でデーモン化しているアプリのログを確認してましたが、特にアプリが落ちたりもなく、ダウンタイムはなかったように見えました。(バージョン間の差異には注意が必要でしょうけど)
たぶんforever
の再起動は必要なんだろうと思ってそれはしときましたが、常時アクセスが途切れないようなアプリでも結構安心してアップグレードできそうな感じで良かったです。(n
というよりかforever
のおかげかも?)