Heroku
Herokuとは、無料で利用できるホスティングサービス。
Python、Node.js、PHPなど複数の言語に対応。
Herokuにプロジェクトをデプロイする方法
下準備
Express.jsでプロジェクトを作成する方法などを参考に、プロジェクトを作成。
Gitの使い方を参考に、gitを初期化、.gitignore
の作成、ブランチ名の変更、コミットなどを行う。
ローカルのブランチ名をmainに変更
git branch -a
デフォルトでは、masterというブランチ名になっている。
git branch -m main
ブランチ名をmainに変更。
git branch -a
ブランチ名がmainと表示されればOK。
ローカルのgitリポジトリをHerokuと連携する
heroku create xxx
Heroku上にxxx
という名前のアプリを作成。
(Heroku上にリモートリポジトリが作成される)
プロジェクトディレクトリでこのコマンドを実行することで、ローカルのgitリポジトリとHerokuのリモートリポジトリが紐づく。
xxx
(アプリ名)は他社が作成済みのアプリ名と重複するとエラーとなる。
リモートリポジトリを確認
git remote -v
- 実行結果
heroku https://git.heroku.com/xxx.git (fetch) heroku https://git.heroku.com/xxx.git (push)
上記のようなリポジトリ名・URLでリモートリポジトリが作成される。
Procfileを作成
プロジェクトルートにProcfile
というファイルを新規作成。
- Procfile
web: npm start
Procfile
には、
web: npm start
と1行だけ記入する。
(プロジェクトがExpress.jsなどを使っている場合)
これにより、Herokuのアプリが起動するとき(web dynoが起動するとき)にnpm start
というコマンドが実行される。
npm start
は、package.json
のscripts
でstart
に設定したもの。
- package.json
"scripts": { "start": "node ./bin/www" }
Herokuにpushする
git push -u heroku main
現在のブランチを、heroku
(リモートリポジトリ名)のmain
(ブランチ名)にpush
する。
-u
オプションを付けると、次回以降はgit push
だけでgit push heroku main
と同じ効果が得られる。
(git push
だけでHerokuにデータをアップロードできる)
プロセスが正常に走っているか確認する方法
heroku ps
- 実行結果
Free dyno hours quota remaining this month: 420h 44m (76%) Free dyno usage for this app: 102h 48m (18%) For more information on dyno sleeping and how to upgrade, see: https://devcenter.heroku.com/articles/dyno-sleeping === web (Free): npm start (1) web.1: up 2021/07/08 17:00:12 +0900 (~ 49m ago)
web.1: up
のような表示があれば、プロセスが稼働中。
Herokuアプリをブラウザで開く
heroku open
ブラウザが起動してHerokuアプリが開く。
URLはhttps://xxx.herokuapp.com
のような形式。
Herokuのログを見る
heroku logs --tail
Herokuのログが表示される。
Herokuのロケールと言語を設定する
Herokuのフリープランではリージョンがアメリカのみ。
デフォルトではロケール(タイムゾーン)がアメリカになっている。
また、言語設定が英語になっている。
タイムゾーンを変更する
heroku config:add TZ=Asia/Tokyo
タイムゾーンを日本に設定。
言語を日本語に設定
heroku config:set LANG=ja_JP.UTF-8 heroku config:add LC_ALL=ja_JP.UTF-8
言語を日本語に設定。
Herokuにログインする
heroku login
ブラウザが起動、Herokuへのログインウィザードが発生する。
Herokuにログインしなかった場合
Herokuにログインしていない状態でherokuコマンドを実行すると、下記のようなメッセージが出る。
! Invalid credentials provided. heroku: Press any key to open up the browser to login or q to exit:
エンターキー
など(q以外のキーならなんでもいい)を押すとブラウザが起動する。
ブラウザでHerokuにログインすると、コンソールでherokuコマンドが継続される。
コンソールでq
を入力した場合や、ブラウザでログインに失敗した場合は、コマンドが失敗する。
Herokuのビルドパックを確認する
Herokuにビルドパックを追加する
heroku buildpacks:add https://github.com/CoffeeAndCode/puppeteer-heroku-buildpack
ビルドパックのURLを指定してビルドパックを追加。
(puppeteer
用のビルドパックを追加している)
heroku buildpacks
- 実行結果
1. heroku/nodejs 2. https://github.com/CoffeeAndCode/puppeteer-heroku-buildpack
heroku buildpacks
コマンドを実行すると、ビルドパックが追加されていることが確認できる。
順序も関係あり、上から順に適用される。
heroku/nodejs
をベースにして
puppeteer-heroku-buildpack
が動く。
(逆だと機能しない)
Slug Size too large エラーへの対処
Herokuのサイズ制限は500MB
まで。
デプロイをするたびにキャッシュのサイズが大きくなる。
500MB
を越えた場合は、キャッシュを削除してサイズを減らす。
heroku-repoをインストール
heroku plugins:install heroku-repo
heroku-repo
というプラグインをインストールする。
(キャッシュ削除のコマンドを実行するために必要なプラグイン)
この作業は1回だけでOK。
(キャッシュクリアのたびに実行する必要はない)
Herokuのキャッシュを削除する
heroku repo:gc --app xxx heroku repo:purge_cache --app xxx
Herokuのキャッシュを削除。
(キャッシュクリアのたびに必要な作業)
xxx
のところにはアプリ名を入れる。
Herokuのアプリ名を変更する方法
herokuのgitがあるディレクトリで以下のコマンドを実行。
heroku apps:rename xxx
herokuアプリのURLが
https://xxx.herokuapp.com
のようなものに変更される。
Herokuをリスタートする方法
heroku restart
Herokuと同期しているディレクトリで、heroku restart
コマンドを実行する。
Herokuその他
Herokuをログアウトする
heroku logout
VSCodeのターミナルから上記のコマンドを実行する。
複数のHerokuアカウントを使い分けるときは、一旦heroku logoutでログアウトし、別のHerokuアカウントにログインしなおす。