ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

Node.jsをさわりはじめました

お仕事とは関係がないのですが、最近Node.jsをさわりはじめました。 Node.jsとは簡単に言うと、サーバーで動くJavaScriptです。ChromeのV8 JavaScriptエンジンをサーバーで実行するフレームワークみたいなものだそうです。Download ページから各OS別のインストーラーやバイナリーパッケージをダウンロードできます。

インストールについては、WindowsOS 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/');

実行結果

f:id:ytooyama:20160624001644j:plain

Node.jsでこういったサービスを動かす時は動的なコードをjsファイルに書いてnodeコマンドを実行するわけですが、コマンドの最後に&をつけて実行するとバックグラウンドで実行できます。&をつけるとバックグラウンドでコマンドが実行されるというのはLPIC レベル1で学ぶ内容ですね。

$ node service.js
↓
$ node service.js &

ここまでまあなんとかWebサーバーらしいものを動かすことができましたが、作ったhtmlファイルをディレクトリー上に置いて普通のWebサーバーっぽい使い方をしたいですよね。やっぱり。

検索したらありましたよ。うってつけのものが。

blogs.msdn.microsoft.com

ここで紹介されているコードを実行して、そのjsファイルと同じパス上にhtmlファイルなどをそれぞれおけば、静的なWebコンテンツを配信する簡易なWebサーバーの出来上がり...というわけみたいです。

必要なファイルをjsファイルと同じディレクトリー上に置いて、

f:id:ytooyama:20160623235209p:plain

コマンドを実行してサービスを起動。

f:id:ytooyama:20160623235218p:plain

1ページ目が表示され、リンクをたどると2ページ目に遷移される。

f:id:ytooyama:20160623235227j:plain f:id:ytooyama:20160623235235j:plain

なかなか面白いのでこれからも触ってみたいと思います。

このブログサイトはJavaScriptを使っていますが、読み込んでいるJavaScriptは全てはてなが提供しているものであり、筆者が設置しているものではありません。