Dance with Tech

プログラミングとか学んだことの備忘録ブログです。

Vagrant使ってnode.jsとか色々ぶっこんでいくついでに解説とかしていくんで夜露死苦!

前回はMEAN Stackの話を書きました。

今回はVagrantを使って作った仮想環境に、node.jsとか色々突っ込んでいこうと思います。

Vagrantのインストール

f:id:kmatz90:20141030120027p:plain

とりあえず、下記サイトを見てやれば、

VirtualboxのインストールからWebページの表示まで完遂出来ます。

boxファイルのインストールやApacheの設定なども載っています。

web帳 | VirtualBoxとVagrantで開発環境を構築

※今回はCentOS6.4をインストールしました

 

仮想環境にnode.jsを入れる

node.jsをインストールするにはEPELリポジトリが必要なので、下記のコマンドを実行します。

EPELリポジトリとは、CentOSに元から入っているリポジトリでは提供されていないパッケージが、yumでインストール出来るようになるリポジトリです。

EPELリポジトリにnode.jsが入っているのでインストールが可能になります。

node.jsの特徴

f:id:kmatz90:20141029205654p:plain

nodeは厳密に言うとプログラミング言語では無い

nodeはサーバーサイドJavaScriptです。

用途としては、ApacheとかのWebサーバー構築ソフトと置き換えて使うイメージです。

 

シングルスレッドでしか動かない

シングルスレッドなので、どんどんアクセスを受け付けてしまいます。

そのため、速く処理できないとパンクします。

対義語はマルチスレッド

 

シングルスレッドでも速く動かすために、ノンブロッキングI/Oとイベントループというモデルを採用している

ノンブロッキングI/O(非同期IO)とは↓

コンピュータ内部のCPUと周辺装置のデータ入出力(I/O)において、データの送受信の完了を待たずに他の処理を開始する方式。並列処理の一種。

非同期I/Oでは、I/O処理と並列に、データの送受信が完了していなくても可能な処理を進め、送受信が済まないと進められない処理にたどりついた場合に、そこで送受信の完了を待つ。

これに対し、正常に送受信が完了したかどうかの結果を待ち、送受信処理に完了してから残りの処理を行う方式を同期I/O(ブロッキングI/O)という。

IT用語辞典より

 

イベントループとは、受けたリクエストを1つ1つ処理していくモデルです。

1つずつしか処理しないので、メモリを圧迫せずに済みます。

これに対し、複数のリクエストをまとめて処理するのがスレッドモデル。

 

ノンブロッキングI/Oとイベントループの特徴を活かすと

AさんとBさんが同時にリクエストを投げた場合、

Aさんがリクエストした処理に時間がかかっていたとしても、その完了を待たずにBさんがリクエストした処理に移れます。

 

Gitをインストール

たぶん入れておいた方が良いのでGitを入れます。

GitをインストールするにはRPMforgeが必要なので先にインストールします。

※CentOS7からはGitがデフォで入っているようです。

RPMforgeとは、EPELリポジトリと同じでyumを強くするようなリポジトリです。

RPMforgeリポジトリがインストール出来たら、Gitをインストールします。