search
LoginSignup
35

More than 5 years have passed since last update.

posted at

updated at

herokuにgitでリリースするまでを割と丁寧に解説する

このエントリはGit Advent Calendar / Jun.の5日目です(遅れてすみません)。
Advent Calendar参加者でネタ探しに困っている方は、最後に質問を載せたので回答いただけるとありがたいです。

herokuを一言で言うと

リリース周りの設定とスケールアウトが簡単なレンタルサーバー

どれくらい簡単なの?

リリース
%git push heroku master
#一度herokuの設定をしたらこれだけでリリースができる
スケール
%heroku scale web=2
#これでフロントの処理台数を2台にスケールアウトする
#フロント1台だけなら無料でつかえる

普通どれくらい大変なの?

「普通」のレベルにもよりますが、レンタルサーバーの設定、OSの設定、apacheの設定、言語のインストール、フレームワークのインストール、memcachedの設定、ライブラリのインストール、ファイアウォールの設定…etcなどがありますが、pushするだけでこのあたりをよしなにしてくれます。herokuで使用できる言語は、ruby,node.js,clojure,java,python,scalaです。


使い方

#おとなの都合でscala + playです
#copypastableを重視して、コマンド先頭の$や%は省略しています。

0.herokuからherokuのCLIをダウンロード、インストールする

自分は以前gemでインストールした古いバージョンのCLIが残っていたりしてハマりました。
下記のコマンドでherokuのCLIのバージョンをあげることができます。

herokuCLIのupdate
heroku update

1.プロジェクトのルートディレクトリに設定ファイルを作成する

Procfile
web: target/start -Dhttp.port=${PORT} ${JAVA_OPTS}
#このファイルの内容は、選択した言語等によって変わります
#今回はscala + playです。

2.おさらい

gitリポジトリの作成
git init
git add .
git commit -m "initial commit"

3.Heroku側にstackを作成しつつgit remote addする

heroku create -s cedar

ここでいうstackはstackとqueueのstackではありません。単なる積み重ね的な意味のstackです。自分は初めてこれを聞いたときにとてもモヤモヤして、herokuのどこにstack的な振る舞いがあるのか悩みました。stackは一度作成されると半永久的に残るので、同じプロジェクトに修正を加えてpushする際は、この3番の工程は必要ありません。それと、このcedarというのは、そのstackの種類で、他にもbamboo-mriというのもあります。stackの種類によって、使える言語が異なります。cedar stackならほとんどの言語に対応しています(対応していないのは古いruby)。cedarという一般的でない単語が出たのでここでも困惑しました。英語圏だと一般的なんでしょうか。CUI的なものでもインターフェイスのわかりやすさは重要だと思いました。
また、このコマンドによって、プロジェクトのgitリポジトリのremoteにherokuという名前でホスト先の.gitがaddされます。

確認
git remote -v
heroku  git@heroku.com:test.git (fetch)
heroku  git@heroku.com:test.git (push)

4.herokuにpushし、リリースする

herokuにpush
git push heroku master
heroku scale web=1
heroku open

git push heroku masterによって、先ほど3番で作成したstackにpushして完了です。heroku scaleは始めに必要(だったはず)ですが、それ以降は処理台数を変更するとき以外は使いません。heroku openによって、pushしたWebアプリをブラウザで開きます。

質問

自分は、普段mercurialを使っていて、実はgitの長所がよくわかりません。gitのエコシステム(heroku,github)は素晴らしいと思うのですが、git自体はmercurialよりも使いにくい印象(工程が多い)で、エコシステムを利用するとき以外に使いどころがよくわからないので、両刀使いの方がいたらぜひ比較解説をお願いします(主に使い分けに重点を置きながら)。下記参考にしてください。
http://qiita.com/items/3d3503e427c0c51e9700

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
35