しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

Microsoft Azure Web サイトの Node.js バージョンを切り替える方法

Azure Web サイトで Node.js が使えるようになっているのは割と知られていると思いますが、実は複数のバージョンがインストールされていて、ユーザー側で自由に選択可能なことはあまり知られていなさそうだったので書きます。

今日の段階で以下のバージョンがインストールされています。ちなみに、この一覧は Kudu の REST API を叩くことで取得できます。

Node.js バージョン npm バージョン
0.10.26 1.4.3
0.10.24 1.3.21
0.10.21 1.3.11
0.10.18 1.3.8
0.10.5 1.2.18
0.8.19 1.2.10
0.8.26 1.2.30
0.8.2 1.1.36
0.6.20 1.1.37
0.6.17 1.1.21

現在の Node.js 最新版は 0.10.28 なので、少し古いバージョンが入っています。しかし、デフォルトで有効になっている Node.js バージョンは 0.10.21 なので、これをインストールされている中では最新版の 0.10.26 に切り替えてみます。

とりあえず管理ポータルから Node.js Express テンプレートをインストールして、適当に Node.js のバージョンを出力するように変更します。Node.js のバージョンは process.version を使うことで取れるみたいです。

exports.index = function(req, res){
  res.render('index', { title: 'Express', version: process.version });
};

テンプレート側では単純に出力しているだけなので特に説明は不要ですね。

extends layout

block content
  h1= title
  p Welcome to #{title}
  p version #{version}

さて、これを実行すると以下の画像のようにバージョンが表示されます。

f:id:shiba-yan:20140506235849p:plain

Web サイトのデフォルト Node.js バージョンは 0.10.21 なので想定通りですね。

そして、Node.js のバージョンを切り替える方法ですが、PHP や .NET Framework のように管理ポータルからトグルで切り替えといった機能は用意されていません。

その代わりに WEBSITE_NODE_DEFAULT_VERSION というアプリケーション設定が用意されているので、この値を直接変更します。

f:id:shiba-yan:20140507000118p:plain

元々は 0.10.21 という値だったと思うので、それを 0.10.26 に書き換えて保存します。たったこれだけです。

先ほど修正したページを再表示させてみるとバージョンが切り替わっていることが確認できます。

f:id:shiba-yan:20140507000406p:plain

Node.js に関してもトグルなどでバージョンの切り替えが行えれば便利だと思うのですが、アップデートが非常に早いので難しいのかもしません。

PaaS らしく 0.10.x / 0.8.x / 0.6.x といった stable なバージョンの指定だけで、後は最新版になるという形になってほしいなと思いました。