お仕事とは関係がないのですが、最近Node.jsをさわりはじめました。 Node.jsとは簡単に言うと、サーバーで動くJavaScriptです。ChromeのV8 JavaScriptエンジンをサーバーで実行するフレームワークみたいなものだそうです。Download ページから各OS別のインストーラーやバイナリーパッケージをダウンロードできます。
インストールについては、WindowsやOS Xでは公式で配布されるインストーラーを使うのがもっとも簡単です。Linuxは公式で配布されるバイナリーパッケージを使う方法やパッケージマネージャーを使う方法があるようです。
Node.jsでWeb検索するといろいろおもしろいものが出てくるのですが、まずは次のサイトに従ってWebサーバーを動かしてみました。
engineer.recruit-lifestyle.co.jp
これは次のように設定しているので、Webブラウザーで「http://127.0.0.1:1337」にアクセスすると、「Hello World」と一行表示されると思います。ポートが空いていれば、そのサービスが動いているサーバーの他のIPアドレスからもアクセスできます。
... listen(1337, '127.0.0.1'); // 127.0.0.1の1337番ポートで待機
さらに先ほどのソースを次のように書き換えると、HTMLで表示されるようになります。console.logを指定するとコンソールに任意の文字列を出力できます。
var http = require('http'); http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/html'}); response.end('<html><body><h1>Hello, World!</h1></body></html>'); }).listen(1337); console.log('Server running at http://127.0.0.1:1337/');
実行結果
Node.jsでこういったサービスを動かす時は動的なコードをjsファイルに書いてnodeコマンドを実行するわけですが、コマンドの最後に&をつけて実行するとバックグラウンドで実行できます。&をつけるとバックグラウンドでコマンドが実行されるというのはLPIC レベル1で学ぶ内容ですね。
$ node service.js ↓ $ node service.js &
ここまでまあなんとかWebサーバーらしいものを動かすことができましたが、作ったhtmlファイルをディレクトリー上に置いて普通のWebサーバーっぽい使い方をしたいですよね。やっぱり。
検索したらありましたよ。うってつけのものが。
ここで紹介されているコードを実行して、そのjsファイルと同じパス上にhtmlファイルなどをそれぞれおけば、静的なWebコンテンツを配信する簡易なWebサーバーの出来上がり...というわけみたいです。
必要なファイルをjsファイルと同じディレクトリー上に置いて、
コマンドを実行してサービスを起動。
1ページ目が表示され、リンクをたどると2ページ目に遷移される。
なかなか面白いのでこれからも触ってみたいと思います。