AWS EC2上でNode.js開発環境構築

Startup Weekend Tokyoで優勝したfilmity(DREAM PASS)で、サーバー側の構築も手伝うことになったので、自分用メモも兼ねて発信していこうと思います。当面は、googleで検索すれば山ほど出てくる情報ばっかですが^ ^;

ちなみにfilmityは、サーバーサイドはAWS EC2 + node.js + mongoDBです。どれも触ったことないので、同じレベル感の人には役立つかな?ちょっとでも触ったことある人は、当面は何の役にも立たないブログです。

[目的]

AWS EC2上にnode.js開発環境を構築する。

[前提条件]

  • AWSのアカウントは作成済み。

  # アカウント作成は随分前にやったので、どうやって登録したのか私が覚えてないため^ ^;

  • 私が使ってるのがMBAなので、Macユーザを想定して書きます。でもWindowsユーザも大差ないかと。

[ゴール]

クリスマスってことで、npm xmasの実施をゴールとします。ターミナル上にクリスマスツリーの絵を出力する隠しコマンドなので、ちゃんと導入出来たか分かりやすいですしね^ ^

[手順1 : AWS EC2上にインスタンスを作成]

まずはnode.jsを動かすためのOS環境として、AWS EC2にインスタンス(1OS)を作成します。

1. EC2タブを選択し、"Launch Instances"ボタンをクリック。作成するインスタンスの設定が始まります。

2. まずはKey Pairを作成します。AWS EC2は、セキュリティのためにtelnetftpでのアクセスが出来ず、sshやsftpでのアクセスとなります。その際に使用するキー(パスワードみたいなもの)を作成します。使用方法は後述。

3. インスタンス名を決めます。複数のOSを管理する時に、各OSを識別するための名前です。インストールの簡単なQuick


  • 今回はインストールの簡単な"Quicklaunch"を選択しています。使ったことないけど、多分"Launch Classic Wizard"を選択すると、より詳細にインスタンスの設定が出来るんだと思います。
  • OSの種類は複数ありますが、今回はAMAZON Linuxとします。OSごとに微妙に使い方が違うようです。例えばSUSE Linuxだとrootでログインですが、AMAZON Linuxだとec2-userでログイン(ログイン後に"sudo su -"でrootにはなれます)します。

4. 設定を確認して、"Launch"をクリック。

起動中はpendingと表示されます。

30秒もかからない位で起動完了です。

終わり。楽ですね〜。これだけみても、SIer潰れるんじゃない?って気がしないこともないですね。笑。

5. さて、作ったインスタンスにログインしましょう。

まず先ほど作ったKey Pairですが、デフォルトのアクセス権限(644)では使えません。chmodコマンドで400に変更します。

takuto-2:DREAMPASS takuto_1981$ pwd
/Users/takuto_1981/Documents/DREAMPASS
takuto-2:DREAMPASS takuto_1981$ ls -l
total 40
-rw-------@ 1 takuto_1981 staff 1696 12 11 16:45 demo-key.pem
-rw-r--r-- 1 takuto_1981 staff 2945 12 19 23:47 ec2.rtf
-rw-r--r--@ 1 takuto_1981 staff 1692 12 25 13:16 filmity-key.pem
-r-------- 1 takuto_1981 staff 1692 12 20 10:45 node4dreampass.pem
-r--------@ 1 takuto_1981 staff 1692 12 20 11:05 test-key.pem
takuto-2:DREAMPASS takuto_1981$ chmod 400 filmity-key.pem
takuto-2:DREAMPASS takuto_1981$ ls -l
total 40
-rw-------@ 1 takuto_1981 staff 1696 12 11 16:45 demo-key.pem
-rw-r--r-- 1 takuto_1981 staff 2945 12 19 23:47 ec2.rtf
-r--------@ 1 takuto_1981 staff 1692 12 25 13:16 filmity-key.pem
-r-------- 1 takuto_1981 staff 1692 12 20 10:45 node4dreampass.pem
-r--------@ 1 takuto_1981 staff 1692 12 20 11:05 test-key.pem

また、先ほどのAWS管理画面から、インスタンスへアクセスする際のアドレスを確認します。

で、ログイン。簡単ですね^ ^

takuto-2:DREAMPASS takuto_1981$ ssh -i /Users/takuto_1981/Documents/DREAMPASS/filmity-key.pem ec2-user@ec2-50-19-19-183.compute-1.amazonaws.com
__| __|_ )
_| ( / Amazon Linux AMI
___|\___|___|

See /usr/share/doc/system-release/ for latest release notes.
There are 17 security update(s) out of 25 total update(s) available

sshでアクセスする時の記法は、以下の通り。

ssh -i (作成したprivate key:もちろんパスも含めて) (ユーザー名:ec2-user固定)@(インスタンスのアドレス)

[手順2 : node.jsのインストール]

まずnvmを導入しましょう。多分Node Version Managerの略かな?新しいバージョンのNode.jsがリリースするたびにDLしてビルドして…とか面倒ですよね。そこら辺をよしなにやってくれるツールです。

1. 上記の通りnvmでビルドなどやってくれるので、必要なmakeなどをあらかじめインストールします。

[ec2-user@ip-10-117-93-66 ~]$ sudo yum install git gcc-c++ make openssl-devel

gcc-c++とmakeとopenssl-devlっていうモジュールを導入してます。

2. nvmのインストール

[ec2-user@ip-10-117-93-66 ~]$ git clone git://github.com/creationix/nvm.git ~/.nvm

3. nvm使って最新のnvmを導入

[ec2-user@ip-10-117-93-66 ~]$ nvm install v0.6.6

バージョン0.6.6を導入しました。最新のNode.jsのバージョンは、Node.jsのサイトで確認して下さい^ ^
他のモジュールと違ってNode.jsの導入はそれなりに時間かかりますが、あせらずのんびり〜。

4. nvmは複数のバージョンのNode.jsを管理しています。インストールしたNode.jsのうち、どれを使うかを教えてあげます。

[ec2-user@ip-10-117-93-66 ~]$ nvm use v0.6.6

AWS EC2にログインするたびにこのコマンド打つのは面倒なので、以下を~/.bashrcに追記して、ログイン時に自動的にNode.js v0.6.6を使用するよう設定すると楽です。

. ~/.nvm/nvm.sh
nvm use v0.6.6

". ~/.nvm/nvm.sh"はnvmの起動シェルです。これもAWSに毎回ログインするたびに打たないといけないので、.bashrcに追記しておくといいです。

[手順3 : XMAS!!]

1. Node.js用のいろんなライブラリを導入してくれるツールであるnpm(Node Package Manager?)を使います。これは先ほどのnvm導入で勝手に入ってるます。

[ec2-user@ip-10-117-93-66 ~]$ npm xmas


npm loves you Happy Xmas, Noders!

出来た!