AWS EC2上でNode.js開発環境構築
Startup Weekend Tokyoで優勝したfilmity(DREAM PASS)で、サーバー側の構築も手伝うことになったので、自分用メモも兼ねて発信していこうと思います。当面は、googleで検索すれば山ほど出てくる情報ばっかですが^ ^;
ちなみにfilmityは、サーバーサイドはAWS EC2 + node.js + mongoDBです。どれも触ったことないので、同じレベル感の人には役立つかな?ちょっとでも触ったことある人は、当面は何の役にも立たないブログです。
[目的]
AWS EC2上にnode.js開発環境を構築する。
[前提条件]
- AWSのアカウントは作成済み。
# アカウント作成は随分前にやったので、どうやって登録したのか私が覚えてないため^ ^;
[ゴール]
クリスマスってことで、npm xmasの実施をゴールとします。ターミナル上にクリスマスツリーの絵を出力する隠しコマンドなので、ちゃんと導入出来たか分かりやすいですしね^ ^
まずはnode.jsを動かすためのOS環境として、AWS EC2にインスタンス(1OS)を作成します。
1. EC2タブを選択し、"Launch Instances"ボタンをクリック。作成するインスタンスの設定が始まります。
2. まずはKey Pairを作成します。AWS EC2は、セキュリティのためにtelnetやftpでのアクセスが出来ず、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"をクリック。
終わり。楽ですね〜。これだけみても、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!
出来た!