Herokuでアプリ開発を始める準備
Herokuでアプリ開発を始めるための手順。
CodeZineのこちらのページが大変参考になります。この記事は、このページのコマンド実行部分を抜き出したメモです。
- 無料枠でできる範囲
- 作るのはJave Servletアプリ(掲示板)
- 言語はPython
- DBはPostgreSQL
手元環境は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://<VMのIPアドレス>: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