小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


nodeが動くクラウド環境Duostackでnode.jsのアプリを動かしてみたよ。

はじめに

このエントリでは、RubyとNode.jsが無料で使えるクラウド環境Duostack(デュオスタック)でnode.jsのアプリケーションを動かすまでの手順について書いています。このエントリを書くにあたり、以下のエントリを参考にさせていただきました。

Duostack(デュオスタック)について

Duostackは、node.jsをサポートしている数少ないホスティングサービスの1つです。現在オープンベータ中につき、無料でユーザ登録およびクラウド環境の利用ができます。

Duostackのユーザ登録

以下のURLからユーザ登録を行います。登録するとすぐにメールが飛んできて、クラウド環境が利用できるようになります。

クライアントOSとソフトウェアのバージョン
  • Mac OS X 10.6.7
  • Git 1.7.4.4
  • node.js 0.4.2
  • npm 1.0.6
  • express 2.3.4
  • duostack 0.5.0(duostackのクライアントツール)
クライアントにnode.jsをインストールする

まずは、クライアントマシンにnode.jsをインストールします。Duostackがサポートしているのはv0.4.2までなので、0.4.2をインストールします。

wget http://nodejs.org/dist/node-v0.4.2.tar.gz
tar zxvf node-v0.4.2.tar.gz
cd node-v0.4.2
./configure
make
sudo make install
node -v
>v0.4.2
クライアントにnpm(Node Package Manager)をインストールする

npmというパッケージマネージャをインストールします。npmを使うと、関連ライブラリなどのインストールが簡単にできます。

sudo curl http://npmjs.org/install.sh | sudo sh
npm -version
>1.0.6
duostackのクライアントツールをインストールする

npmを利用して、duostackのクライアントツールをインストールします。このとき、-gオプションを指定して、/usr/local/bin/duostackにインストールされるようにします。

sudo npm install duostack -g
duostack version
>0.5.0
which duostack
>/usr/local/bin/duostack
サンプルアプリケーションに必要なexpressとejsをインストールする

duostackと同じ要領でexpressとejsをインストールします。

sudo npm install express ejs -g
express -v
>2.3.4
サンプルアプリケーションを作成します。

さきほどインストールしたexpressを使って、アプリケーションのひな形を作ります。

mkdir work
cd work
express -t ejs nodeSample001
cd nodeSample001

続いて、さきほどインストールしたexpressとejsというライブラリをサンプルアプリケーションに同胞させます。クラウド環境ではnode関連のライブラリがアプリケーションルート/node_modulesというディレクトリになければ読み込みができないようです。

npmでインストールしたライブラリをnode_modulesディレクトリにコピーします。

mkdir node_modules
cp -r /usr/local/lib/node_modules/* node_modules/

duostackとnpmはクラウド環境には不要なの削除します。

rm -rf node_modules/duostack/
rm -rf node_modules/npm/
サンプルアプリケーションをgitの管理対象にする

サンプルアプリケーションのディレクトリに移動して、以下のコマンドを実行します。"first"の部分はコミットコメントなので何でもOKです。

git init
git add .
git commit -m "first"
サンプルアプリケーションをクラウド環境にデプロイする

サンプルアプリケーションができたら、いよいよクラウド環境にデプロイ(配備)していきます。
以下のコマンドを実行すると、メールアドレスとパスワードを聞かれるので、duostackに登録したメールアドレスとパスワードを入力して、Enterキーを押します。
注意:nodesample001の部分はアプリケーション名になりますが、他のユーザともかぶらないような名前にしなければなりません。

duostack create nodesample001
>First-time Duostack client setup
>Email: hogehoge@gmail.com
>Password: 
>Completed initial setup... waiting for sync...

つづいて、以下のコマンドを実行します。

git push duostack master

デプロイしている様子がコンソールに出力されます。

>Initialized empty Git repository in /home/git/repositories/nodesample001.git/
>Counting objects: 3, done.
>Delta compression using up to 2 threads.
>Compressing objects: 100% (2/2), done.
>Writing objects: 100% (3/3), 404 bytes, done.
>Total 3 (delta 0), reused 0 (delta 0)
>
>====  Duostack deploy received for nodesample001
>====  Compiling app... done
>      Compressed size is 4.0KB
>====  Launching first instances...... done
>
>====  App successfully deployed to http://nodesample001.duostack.net
>
>To git@duostack.net:nodesample001.git
> * [new branch]      master -> master
動作確認を行う

ブラウザで以下のURLにアクセスします。


デプロイしたアプリケーションを削除する

ちなみに、デプロイしたアプリケーションを削除する場合は以下のコマンドを実行します。

duostack destroy --confirm --app nodesample001
>App destroyed

トラブルシューティング

fatal: 'duostack' does not appear to be a git repositoryのエラーがでる
git push duostack master
>fatal: 'duostack' does not appear to be a git repository
>fatal: The remote end hung up unexpectedly

以下のコマンドを叩いて、リモートホストにduostackを追加する。

git remote add duostack git@duostack.net:demoapp.git
Permission denied (publickey).のエラーがでる
git push duostack master
>Permission denied (publickey).
>fatal: The remote end hung up unexpectedly

原因が分からないのですが、僕の場合は以下のようにして解決しました。
1. duostackの管理ディレクトリを削除する

rm -rf ~/.duostack

2. ホームディレクトリ/.ssh/known_hostsを開いて、テキストエディタでduostackの行を削除する。
3. SSH鍵を再生成します。

ssh-keygen -t rsa -C "メールアドレス"


実践JS サーバサイド JavaScript 入門
井上 誠一郎
技術評論社
売り上げランキング: 12511