てすてぃんぐライフ

駆け出しQAエンジニアの備忘録

Herokuでアプリ開発を始める準備

Herokuでアプリ開発を始めるための手順。

CodeZineのこちらのページが大変参考になります。この記事は、このページのコマンド実行部分を抜き出したメモです。

手元環境はMac OSX上に立てた Ubuntu14 です。

Herokuアカウント登録、Toolbeltインストール、Herokuログイン

Herokuにアカウント登録します。

Herokuのコマンドラインツール「Toolbelt」をインストールします。バージョン確認コマンドを実行して確認。

heroku version

gitも同時にインストールされます。バージョン確認コマンドを実行して確認。

git version

herokuコマンドと先ほどサインアップしたアカウントをひもづけるためにheroku loginコマンドを実行。

heroku login

紐付いているアカウントを確認するコマンド。

heroku auth:whoami

hello worldを作成して動かすまで

ローカルで実行するまで

Servlet コンテナには、Herokuの中の人が作成した「Webapp Runner」を使用します。ベースとなるコードは冒頭に記載のページで紹介されているGitHubレポジトリから拝借します。ローカルにリポジトリのクローンを作成するコマンドを実行。

$ git clone https://github.com/shunjikonishi/codezine-sample.git -o upstream

実行に成功するとカレントディレクトリに「codezine-sample」というディレクトリが作成され、そこにリポジトリの内容がコピーされます。

リポジトリの中身を確認します。

$ git remote -v

まずはローカルで実行します。コンパイルして実行。

$ mvn package
$ ./run.sh

Webブラウザで http://<VMIPアドレス>:5000 にアクセスするとHello Worldの文字列が表示されるはず。

デプロイして本番環境で確認するまで

Heroku上にアプリケーションを作成します。

$ heroku create [APPNAME]

上記のコマンドを実行した結果、以下が行われます。

  • [APPNAME]というアプリケーションが作成され、そのstackは「cedar-14」であること
  • 「http://[APPNAME].herokuapp.com/」というURLが用意されたこと
  • 「git@heroku.com:[APPNAME].git」というgitリポジトリが用意されたこと
  • ローカルのgit remoteに「heroku」という参照名が追加されたこと ローカルのリポジトリを確認するには以下のコマンドで。
$ git remote -v

いよいよデプロイの段階になりました。デプロイするのは git push コマンドです。

$ git push heroku master

コードを修正してまたデプロイする

コードを修正したら、一度ローカルでコンパイルして実行し、動作確認します。問題なく実行できたら、修正内容をgitリポジトリに反映し、git pushでデプロイします。

$ git status
$ git add .
$
$ git status
$ git commit -m "Modify message."
$
$ git status
$ git push heroku master
  • git add
    • 引数のファイルをコミット対象リストに追加するコマンド。
    • 引数を「.」とした場合はカレントディレクトリ以下の変更のあるファイルすべてが対象となる。
  • git commit
    • コミット対象リストのファイルをリポジトリに反映する。
    • -mはコミットメッセージの指定。

アプリを掲示板にする

Heroku Postgresを追加する

使用しているアドオンを確認するコマンドを実行。

$ heroku addons

アドオンを追加するにはheroku addons:add を実行します。

$ heroku addons:add heroku-postgresql

heroku configコマンドで、DBの接続情報を確認します。

$ heroku config

出力されたDATABASE_URLは、アプリケーションがメインで使用するデータベースの接続情報。

データベースにコマンドラインでアクセスします。psqlコマンドをローカルにインストール後、以下のコマンドを実行。

$heroku pg:psql

掲示板アプリのコードを取得してデプロイするまで

掲示板のコードは冒頭に記載したページから拝借します。

$ git fetch upstream
$ git branch 03 upstream/03
$ git checkout 03
  • git fetch …upstreamからリポジトリの内容を取得するコマンド
  • git branch …upstreamの03ブランチからローカルに03ブランチを作成するコマンド
  • git checkout …ローカルのブランチを切り替えるコマンドです

このコードでは、環境変数DATABASE_URLから接続情報を取得してデータベース接続を行ってます。そのためローカル環境でも環境変数の設定が必要です。(UbuntuへのPostgreSQLのインストール方法はこちらを参考に。UbuntuにPostgreSQL 9.1をインストールする - 涼風コンピュータblog

$ export DATABASE_URL=postgres://[username]:[password]@localhost:5432/[DB名]

ローカル用のデータベースには create.sql を実行して、テーブルを作成しておきます。

ローカルで動作確認し、問題なく実行できたら、heroku上にもDBを作成します。

$ heroku pg:psql
codezine-sample::BLUE=> CREATE TABLE message_board (
codezine-sample::BLUE=>   id serial primary key,
codezine-sample::BLUE=>   nickname varchar(40) COLLATE "C" NOT NULL,
codezine-sample::BLUE=>   message text COLLATE "C" NOT NULL,
codezine-sample::BLUE=>   post_date timestamp default current_timestamp
codezine-sample::BLUE=> );

そしてgit pushでデプロイします。

$ git push heroku 03:master