目次

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.jsonscriptsstartに設定したもの。

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 buildpacks
実行結果
heroku/nodejs

Express.jsのプロジェクトをデプロイした場合は、上記のようなビルドバックが表示される。

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をログアウトする

heroku logout

VSCodeのターミナルから上記のコマンドを実行する。

複数のHerokuアカウントを使い分けるときは、一旦heroku logoutでログアウトし、別のHerokuアカウントにログインしなおす。