Web開発者の日常

主にプログラミング関連。たまに日常も綴ります。

Herokuを使ってみた

time 2012/01/17

Herokuを使ってみようとして躓いた点からNode.jsのアプリをデプロイするまでを書いていきます。

Herokuとは… Ruby, Node.js, Clojure, Java, Python, Scalaが使えるPaaSで、1プロセス(Web Dyno/Worker Dyno)までは無料で動かすことができます。アドオンで機能を拡張できる点が特徴的です。

バージョン管理システムのGitを使ってデプロイします。

 

まず、Herokuのアカウントを取得します。

Heroku | Cloud Application Platform

公式ドキュメント

次に、デプロイする環境を整えます。(ここでは、Ubuntu 11.10を用います)

Ubuntuに

  • Ruby
  • RubyGems
  • Node.js
  • Git

この4つをインストールします。

sudo apt-get install ruby-full rubygems nodejs git
ruby -v
gem -v
node -v
git version

Node.jsの最新版をインストールしたい場合は、

wget http://nodejs.org/dist/node-latest.tar.gz
tar zxvf node-latest.tar.gz
cd node-v*.*.*
./configure
make
sudo make install

または、naveなどのツールを使います。

 

RubyGemsを更新します。

普通は

gem update --system

を使うみたいですが、Debian系のディストリビューションでは使えないため、rubygems-updateを利用します。

sudo gem install rubygems-update
sudo update_rubygems

herokuをインストールします。

ここで躓きました…。

~$ sudo gem install heroku
Invalid gemspec in [/var/lib/gems/1.8/specifications/heroku-2.18.1.gemspec]: invalid date format in specification: "2012-01-10 00:00:00.000000000Z"
Invalid gemspec in [/var/lib/gems/1.8/specifications/term-ansicolor-1.0.7.gemspec]: invalid date format in specification: "2011-10-13 00:00:00.000000000Z"
Invalid gemspec in [/var/lib/gems/1.8/specifications/heroku-2.18.1.gemspec]: invalid date format in specification: "2012-01-10 00:00:00.000000000Z"
Invalid gemspec in [/var/lib/gems/1.8/specifications/term-ansicolor-1.0.7.gemspec]: invalid date format in specification: "2011-10-13 00:00:00.000000000Z"
Successfully installed term-ansicolor-1.0.7
Successfully installed heroku-2.18.1
2 gems installed
Installing ri documentation for term-ansicolor-1.0.7...
Installing ri documentation for heroku-2.18.1...
Installing RDoc documentation for term-ansicolor-1.0.7...
Installing RDoc documentation for heroku-2.18.1...

ん・・・?!

どうやら、日付のフォーマットの問題でエラーが出ているみたいです。

今のところ、解決方法としては手動で1つずつ問題の日付の部分を修正していくしかないようです…。

[ruby][tips]gemのインストール時に invalid date format in specification でエラー

こちらに書かれている通りに直すと、エラーが発生しなくなりました。

.gemspecを開き、

%q{yyyy-mm-dd 00:00:00.000000000 %:z} → %q{yyyy-mm-dd}

に直します。

  • spruz-0.2.13.gemspec
  • heroku-2.18.1.gemspec
  • term-ansicolor-1.0.7.gemspec
  • terminal-table-1.4.4.gemspec

以上4つを修正しました。

herokuの最新バージョンがインストールされているか確認します。

heroku version

これで、環境は整いました。

 

今回は、試しにnode-web-serverをデプロイしてみようと思います。

git clone https://github.com/ww24/node-web-server
cd node-web-server
vi http.conf
{
	"host"			: "0.0.0.0",
	"port"			: "process.env.PORT || 3000",
	<以下省略>

このように変更します。

試しに、ローカル環境で動かしてみます。

~/heroku/node-web-server$ node http.js
Server running at http://0.0.0.0:3000/

ブラウザで http://localhost:3000/ または http://IP Address:3000/ を開いてみてください。

Hello Node.
node-web-server works!

と表示されるはずです。(2012年1月現在)

もし表示されない場合はネットワークの不具合、実行時にエラーが発生する場合はnodeのバージョンが古いか、node-web-serverのバグの可能性があります。バグが疑われる場合は、この記事のコメントかGitHubから報告お願いします><。

 

Ctrl+Cでnode-web-serverを終了させ、いよいよデプロイへ進みます。

~/heroku/node-web-server$ heroku create appname --stack cedar
Enter your Heroku credentials.
Email: <Herokuに登録したメールアドレス>
Password: <パスワード>
Creating appname... done, stack is cedar
http://appname.herokuapp.com/ | git@heroku.com:appname.git
Git remote heroku added

appnameは適当な名前で置き換えて下さい

 

Gitを使ってデプロイするにあたって、RSA鍵を生成して公開鍵をherokuに登録します。

~/heroku/node-web-server$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): [Enter]
Enter passphrase (empty for no passphrase): <passphrase>
Enter same passphrase again: <passphrase>
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
<中略>
~/heroku/node-web-server$ heroku keys:add ~/.ssh/id_rsa.pub
Uploading ssh public key /home/user/.ssh/id_rsa.pub

 

commit, pushします。

~/heroku/node-web-server$ git commit -a -m "deploying to Heroku"
~/heroku/node-web-server$ git push heroku master
Unlock private key

rsa鍵を生成したときに設定したpassphraseを入力します

 

あとは、Gitからcommit, pushするだけで更新できます。

お疲れ様でした。

 

最後に、herokuのコマンドを一部紹介。

heroku help : helpを表示

heroku version : herokuのバージョンを表示

heroku create appname : アプリケーションをappnameという名前で作成

heroku keys : 登録されている公開鍵の一覧を表示

heroku keys:add : 公開鍵の登録

heroku list : アプリケーションの一覧を表示

heroku info : アプリケーションの状態を表示

heroku logs : ログを表示

heroku restart : サーバの再起動

heroku destroy : アプリケーションの削除

 

Cloud Foundryと比べて、デプロイまでに一手間多い気がしますが、一度デプロイしてしまえばその後はGitからcommit, pushするだけなので、簡単にアップデートできて便利だと思います。

次はDotCloudを使ってみようかな…と考えています。

いつ試すかは気分次第ですw

 

参考:

Ubuntu10.04でrubygemsを最新版にする方法

HerokuでNode.jsとExpressを使ってHello worldする

[heroku] Herokuコマンド一覧

 

sponsored link

ブックマーク



アーカイブ

2017年3月
« 5月    
 12345
6789101112
13141516171819
20212223242526
2728293031