はじめに
勉強会でSpringアプリを作ったのでHerokuにデプロイしてみました。
作業の流れと参考になったリンクをまとめておきます。
環境
・Windows10(64bit)
・Java 1.8.0_231
・Spring framework 5.0.2
・thymeleaf 3.0.9
・MySQL 8.0.15
・Git 2.21.0
・heroku 7.24.1
事前準備
####・Herokuアカウントの作成
https://signup.heroku.com/
####・Heroku CLIのインストール
https://toolbelt.heroku.com/
Heroku用にSpringアプリを設定
####・SpringアプリのルートディレクトリにProcfileの追加
ProcfileではHerokuアプリの起動時に実行されるコマンドを指定できます。
web: java $JAVA_OPTS -jar target/dependency/webapp-runner.jar --port $PORT target/*.war
####・pom.xmlの編集
Procfileで設定したコマンドで起動できるように準備します。
まず、target/*.war
でwarを指定したので、warを作成するように書きかえます。
<packaging>war</packaging>
また、webapp-runner
はHerokuで内部的にTomcatを実行してくれます。こちらも追記しましょう。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals><goal>copy</goal></goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.github.jsimone</groupId>
<artifactId>webapp-runner</artifactId>
<version>9.0.19.0</version>
<destFileName>webapp-runner.jar</destFileName>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Herokuにプロジェクトを作成&プッシュ
####①コマンドプロンプトでSpringアプリのルートディレクトリまで移動する
$ cd C:\\git\\SpringApp
(小ネタ)なお、エクスプローラーのURL窓でcmd
と打つと、そのパスでコマンドプロンプトを開けます。
####②Herokuにログイン
$ heroku login
ブラウザでHerokuのログイン画面にとぶので、そのままログイン
####③Herokuにデプロイ
Gitにコミット
※既にgit管理済みの場合は必要ありません
Herokuアプリ作成後に.git/configでURLにherokuが追加されているか確認してください
$ git init
$ git add .
$ git commit -m "Ready to deploy"
Heroku上にアプリを作成
$ heroku apps:create [プロジェクト名]
コードをデプロイ
$ git push heroku master
これでHerokuアプリは起動しているはずです。Webページに飛びたい方は次のコマンドを。
$ heroku open
DBの設定
HerokuでMysqlを使うためにはクレカの登録が必要のようです。
Account settingsのBillingから登録してください。
ちなみにCleardbは5MB以下なら無料です https://elements.heroku.com/addons/cleardb#ignite
登録したらDBを作成します。
$ heroku addons:add cleardb
Herokuの環境変数を確認
$ heroku config
文字化け対策でCLEARDB_DATABASE_URL
の末尾を変更
ユーザー名やパスワードを変えたければその値も変更
$ heroku config:set CLEARDB_DATABASE_URL="mysql://ユーザー名:パスワード@DBのホスト:3306/データベース名?reconnect=true&characterEncoding=UTF-8&characterSetResults=UTF-8"
ここで確認したCLEARDB_DATABASE_URL
の@以降の値をアプリのDB接続URLに指定してください
(DBのホスト:3306/データベース名?reconnect=true&characterEncoding=UTF-8&characterSetResults=UTF-8
)
もろもろ設定したらHerokuにデプロイ
$ git add .
$ git commit -m "Change connection URL"
$ git push heroku master
Herokuサーバーに一時ファイルを起きたい場合
アプリのアップロード機能などを作る際にローカルにファイルを一瞬置きたいときがあると思います。
その場合は/tmp/
を指定してあげてください。
参考リンク
公式ドキュメント
https://devcenter.heroku.com/
Herokuを使って簡単にウェブページをインターネットで公開する方法
https://qiita.com/reoring/items/bca12aaa5f94b190a488
Heroku初心者がJavaで作成したWebアプリをGitHub連携でデプロイする時つまずいた4つのこと
https://qiita.com/ShandyGaffLover/items/0dad6ebf48d649aab761
herokuにlaravel5とMysqlの環境を整える
http://sizukutamago.hatenablog.com/entry/2016/10/21/heroku%E3%81%ABlaravel5%E3%81%A8Mysql%E3%81%AE%E7%92%B0%E5%A2%83%E3%82%92%E6%95%B4%E3%81%88%E3%82%8B
Heroku+ClearDBで文字化けしていた件
https://omiend.hatenablog.jp/entry/2015/02/17/211134
herokuのサーバー上に一時ファイルを作ったこと
http://ncastar.hatenablog.com/entry/2016/01/20/001858