LoginSignup
100

More than 1 year has passed since last update.

無料でWebアプリケーションを公開できるHerokuをやってみた

Last updated at Posted at 2017-11-11

概要

時代の流れにだいぶ乗り遅れている気がしてきたので、少しでも取り戻そうと無料でWebアプリケーションの公開ができるHerokuを試してみるべく、公式サイトのGetting Started on Heroku with Javaをやってみた時のまとめ&備忘録

[公式サイト(英語)]
 Getting Started on Heroku with Java

2022年9月2日追記
時代は変わり、2022年11月28日Heroku無料プランが廃止されるのでご注意ください

Getting Started 完了時にできること

  • 無料でWebアプリケーションが公開できる(制限あり※)
  • 無料でDB(ポスグレ)が使える

※無料枠は、550時間/月
 30分間無操作(アクセスがないなど)だと自動的にスリープ状態
 (アクセスがあれば初回時間がかかるが自動起動する)
 詳細は以下を参照
 Free Dyno Hours

Getting Started 完了までのおよその作業時間

2時間(まとめながらやったのでやるだけならもっとずっと少ない印象)

参考書籍

英語ドキュメントが辛い場合、Herokuに関する唯一?の日本語書籍の以下が参考になりそう
Getting Startedと同程度の内容や、DB、ファイル、起動時のレスポンス時間の記載があり初心者に役に立つ情報が満載
プロフェッショナルのための実践Heroku入門 プラットフォーム・クラウドを活用したアプリケーション開発と運用

自分のスキル

  • Java,Mavenほどほど
  • Heroku,git初心者

事前準備

  • 無料の Heroku account(メールアドレスのみ必要。クレカ登録不要で割と敷居が低い)
  • Java 8
  • Maven 3

下記、手順の中にインストール手順あり

やったことと要点

上記、公式サイトの手順に従い、以下の15STEPを完了
手順に従えば難なくできる
自分は2回失敗(後述)がむしろ恥ずかしい内容、、、

1. Introduction

事前準備の内容
![image.png](https://qiita-image-store.s3.amazonaws.com/0/188544/2c163f96-e7fc-641c-7a5f-d90d06dbd9bc.png)

2. Set up

Herokuコマンドラインのインストール(一緒にgitがインストールされる)
インストール後、Herokuコマンドでログイン
$ heroku login
Enter your Heroku credentials.
Email: java@example.com
Password:

image.png

3. Prepare the app

用意されているサンプルプログラムをgit cloneしてローカルに準備する
$ git clone https://github.com/heroku/java-getting-started.git
$ cd java-getting-started

image.png

4. Deploy the app

サンプルプログラムをHerokuにデプロイ&起動
$ heroku create
$ git push heroku master
$ heroku ps:scale web=1
$ heroku open

image.png

5. View logs

ログ確認方法の説明
$ heroku logs --tail

image.png

6. Define a Procfile

Procfileの説明
HerokuではこのProcfileでアプリケーションの種類を規定しているらしい
![image.png](https://qiita-image-store.s3.amazonaws.com/0/188544/61e94532-bb9d-2821-6d22-435c5ff5eb2d.png)

7. Scale the app

アプリケーションが動くDynoの概念の説明と上記無料枠の説明
Dynoはlightweight, secure, virtualized Unix containerらしい
![image.png](https://qiita-image-store.s3.amazonaws.com/0/188544/c28250ce-69e8-7b3b-2416-0e20fb4c71a2.png)

8. Declare app dependencies

pom.xml,system.propertiesの説明とローカル環境での動作準備
system.properties で動作Versionを指定する
![image.png](https://qiita-image-store.s3.amazonaws.com/0/188544/7d82246a-5eab-409b-890a-3fe1a1721d3e.png)
<失敗1>
Java、Mavenのインストールで環境変数JAVA_HOME、MAVEN_HOME追加、PATHへの設定を省略したため
No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK? 発生
環境変数MAVEN_HOME、JAVA_HOME追加、PATHへの両変数の追加で解消

9. Run the app locally

ローカル環境での起動と画面確認
ローカル環境のアクセスURL:http://localhost:5000
![image.png](https://qiita-image-store.s3.amazonaws.com/0/188544/3b2fe452-ffc4-d4ea-f724-6f48b134fb9b.png)

10. Push local changes

サンプルプログラム修正手順の説明と修正内容のHerokuへのデプロイ
$ mvn clean install
$ heroku local web
$ git add .
$ git commit -m "Demo"
$ git push heroku master
$ heroku open hello

image.png

<失敗2>
git commit -m "Demo" で *** Please tell me who you are.と言われる
heroku login した状態だったので勝手に連携されるだろうと思い込みいろいろやり直す、、、
結果、heroku loginは全く関係ない話しだったので、大人しくPlease tell me who you are.の後に表示された以下のコマンドを実行
git config --global user.email {メールアドレス}
git config --global user.name {名前}

11. Provision add-ons

add-onsが便利そうだがクレカ認証が必要とわかりスキップ
![image.png](https://qiita-image-store.s3.amazonaws.com/0/188544/0b26b17b-33b8-6a7a-b0cf-a622862e2397.png)

12. Start a one-off dyno

Dyno上でコマンド実行ができるとのこと
$ heroku run bash

image.png

13. Define config vars

ローカル環境とHeroku環境の環境差異を考慮してconfig設定が利用できるという説明
ローカル環境では、 .env ファイル、Heroku環境は、コマンドで設定する
$ heroku config:set ENERGY="20 GeV"
$ heroku config

image.png

14. Use a database

DB(ポスグレ)の説明
Heroku上では、サンプルに既にDBアクセス部分があるため、すんなり動作確認完了
Heroku環境のDB接続設定はconfigにある
ローカル環境では別手順がいるらしい(未実施)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/188544/9a2d4528-6e04-3099-2dc8-895e4cd18a1a.png)

15. Next steps

次はこの辺を勉強したらどうですか。という説明
![image.png](https://qiita-image-store.s3.amazonaws.com/0/188544/105b309f-8c1a-8003-3027-f228b63a025b.png)

まとめ

2時間程度で今後はプログラム修正したら以下の手順だけで簡単に公開できるのは便利
DBが使えるのも嬉しい

1. プログラム修正
2. mvn clean install
3. heroku local web
4. ローカルでの動作確認
5. git add .
6. git commit -m "Comment"
7. git push heroku master
8. heroku open

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
  3. You can use dark theme
What you can do with signing up
100