はじめに
このエントリでは、RubyとNode.jsが無料で使えるクラウド環境Duostack(デュオスタック)でnode.jsのアプリケーションを動かすまでの手順について書いています。このエントリを書くにあたり、以下のエントリを参考にさせていただきました。
Duostack(デュオスタック)について
Duostackは、node.jsをサポートしている数少ないホスティングサービスの1つです。現在オープンベータ中につき、無料でユーザ登録およびクラウド環境の利用ができます。
クライアント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
デプロイしたアプリケーションを削除する
ちなみに、デプロイしたアプリケーションを削除する場合は以下のコマンドを実行します。
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 "メールアドレス"
技術評論社
売り上げランキング: 12511