読者です 読者をやめる 読者になる 読者になる

CentOS 6へのnaveを使ったnode.jsのインストール

はじめに

今回は私がnaveを使ってnode.jsをインストールするまでの手順を紹介します。私の環境はCent OS 6.2 x86_64で、VMWare Player上にインストールしています。textモードでインストールしたので初期状態では各種モジュールがほとんどインストールされていませんが(manすらないのには驚きました(笑))、標準リポジトリCentOS 5に比べてかなり充実しているので簡単にモジュールをインストールすることができます。

naveとは

naveとはnode.jsの複数のバージョンを共存させることができるモジュールです。node.js界隈は動きが早く、node.js自体のバージョンアップも頻繁にされるので、このモジュールを使うことで複数のバージョンでの動作確認を簡単に行うことができます。また、単純にnode.jsの最新版や安定版をダウンロードするモジュールとしても便利です。

naveのインストール

私はsudoを連発するのは好きじゃないので、nave等のnode.js周りのモジュールはすべて$HOME以下においています。

gitからnaveのモジュールをcloneし、shファイルをbinディレクトリにコピーします。CentOS 6にはgitは標準リポジトリにすでにあります。CentOS 5だとリポジトリの追加が必要だったので楽になりましたね。

$ git clone git://github.com/isaacs/nave.git
$ cp nave/nave.sh ~/bin/nave

これでインストール終了です。git cloneによってnave.sh以外にもいろいろとファイルがダウンロードされますが、それらはnaveの実行には不要なので適当にあれしてあげてください。

naveの実行とnode.jsのインストール

最初に以下のコマンドを実行します。

$ nave install stable

これで最新の安定版を自動的にインストールしてくれます。執筆時現在のstableは0.6.8です。stableの代わりにlatestを指定すると、非安定版を含む最新版をインストールしてくれます。執筆時現在のlatestは0.7.0です。しかしこちらは非安定版というだけあって、私の環境でも一部のモジュールをインストールできなかったのでお勧めしません。ほかにも0.4といったようにバージョンを直接指定してインストールすることもできます。

なお、node.jsのインストールにはmakeとgcc-c++とopenssl-develが必要です。これらのモジュールも初期状態ではインストールされていないので、標準リポジトリからインストールしてあげてください。

インストールが終了すると~/.nave以下に各種ファイルが置かれます。

node.jsの実行

node.jsを実行する前に、まず以下のコマンドを実行します。

$ nave use stable

これでstableへの環境変数が適切に設定されたシェルが実行されます。以降、node.jsへの操作はこのシェル上で実行します。シェルから抜けるにはいつもどおりexitコマンドかCtrl+Dを実行してください。シェルが正常に実行されているかどうか以下のコマンドで確認します。

$ node -v
v0.6.8

stableのバージョンが表示されたら成功です。

それではnode.jsで実際にWebサーバーを立ち上げてみます。

$ vi app.js
var sys = require('sys');
var http = require('http');
 
var server = http.createServer(
    function (request, response) {
 
        response.writeHead(200, {'Content-Type': 'text/plain'});
        response.write('Hello World!!\n');
        response.end();
    }
).listen(8124);
 
sys.log('Server running at http://127.0.0.1:8124/');
$ node app.js

このように、サンプルとしてapp.jsを作成してnode.jsで実行します。サンプルはこちらからお借りしました。

実行結果の確認ですが、サーバー環境から直接ブラウザを開ければいいのですが、今回はCUI環境しかないのでそれができません。なので外部から見れるよう、/etc/sysconfig/iptablesに以下の行を追加しました。

-A INPUT -m state --state NEW -m tcp -p tcp --dport 1024:65535 -j ACCEPT

これで1024から65535までのすべてのポートが開きます。今後は今回使った8124以外にもいろいろなポートを使うことになるので、いっそのことここで全部あけておきます。あくまでVMWare Player上に構築したテスト環境なのでたぶん大丈夫だと思います。本番環境で同じことやるのはまずいと思いますが。

これでブラウザにHello World!!と表示されれば成功です。