【まとめ】Node.js製WebアプリをHerokuで公開する方法

[記事内には広告が含まれています]

こんにちは、現役エンジニアの inno_tech です。

Node.js(express)で開発したWebアプリケーションをインターネット上に公開する方法をお探しでしょうか?

本記事を見れば、HerokuというPaasプラットフォームを利用してNode.js Webアプリケーションを世界中のユーザーに公開できるようになります

せっかく作ったアプリケーションを色んな人に見てもらいたいよね!

本記事は、Ubuntu 20.04LTS上で開発したNode.jsアプリケーション(express / DBなし)で説明します。

バックエンドが必要ない静的なウェブサイトであれば、Netlifyというサービスもおすすめです。こちらの記事もご覧ください。

あわせて読みたい
【Netlify】静的なウェブサイトを無料で公開する方法をまとめ! 自作したウェブサイト(静的サイト)をインターネット上に無料で公開する方法をお探しでしょうか?静的ホスティングサービスを利用すれば実現できます。 本記事を見れば、...
もくじ

Herokuとは?

HerokuはSalesforce社が提供する製品の一つで、PaaS(Platform as a Service)と呼ばれるクラウドサービスの一種です。

ユーザー側メリットは、Herokuが提供するプラットフォーム(軽量Linuxコンテナ dyno)上で、Webアプリケーションをビルドし、全世界に公開することが無料で実現できることです(ただし無料版では一部制限あり)。

開発者向けにHeroku CLIというツールが提供されており、開発者は非常に簡単にWebアプリケーションをHeroku上にデプロイできる点もおすすめです。

個人開発者にとって無料で使えるのは本当にありがたい!

Herokuサービスの特徴や無料枠に関する情報は、公式HPをご覧ください。無料枠の主な制限は「稼動時間」と「アプリケーション数」です。

Heroku | 無料利用条件(公式HPより転載)
Heroku | 無料利用条件(公式HPより転載)

自作WebアプリケーションをHerokuに公開する手順

必要なステップは5段階です。この流れに沿って詳細の説明を進めます。

  1. Herokuアカウントの作成
  2. UbuntuにHeroku CLIをインストール
  3. 自作WebアプリケーションとHerokuの関連付け
  4. Node.js用ビルド設定
  5. デプロイ

まずは Herokuアカウントを作成し、Webアプリケーションを公開する準備を進めましょう。

Herokuアカウントの作成

まずは Herokuのトップページにアクセスし、新規登録 をクリックします。

Heroku | トップページ
Heroku | トップページ

氏名、メールアドレス等のアカウント情報を入力し、無料アカウント作成 をクリックします。

Heroku | アカウント情報の入力
Heroku | アカウント情報の入力

すると登録メールアドレスにメールが届くので、メールに記載された認証用のURLにアクセスします。

最後に、パスワードの設定をします。

Heroku | パスワードの設定
Heroku | パスワードの設定

ログインページが開くことを確認できれば、アカウント作成は完了です。

次に、Ubuntu(Linux) Heroku CLIツールを利用するためのセットアップを行います。

Ubuntu側の準備

ターミナルからsnapコマンドHeroku Command Line Interface (Heroku CLI) をインストールします。
(ちなみに、npmによるインストールもサポートされています。参考⇒ 公式HP)

sudo snap install heroku --classic

# heroku v7.60.1 from Heroku✓ installed

Heroku CLIをインストールすると herokuコマンドが使えるようになるよ。

次に、Heroku CLIを使って Herokuサービスへのログイン認証を行います。

# ログインコマンド
heroku login

# 以下のように表示されるので<Enter>を押下
 ›   Warning: Our terms of service have changed: 
 ›   https://dashboard.heroku.com/terms-of-service
heroku: Press any key to open up the browser to login or q to exit: 

自動的にブラウザが起動し、下にある画像のようなログイン画面が開くので、画面に沿って進めます。

heroku login | ログイン要求画面
heroku login | ログイン要求画面

メールアドレス、パスワードは事前に作成したHerokuアカウントを使用してください。

heroku login | メールアドレス, パスワードの入力
heroku login | メールアドレス, パスワードの入力

ログインが成功すれば、下の画像のように表示されます。

heroku login | ログイン成功
heroku login | ログイン成功

ターミナルに戻るとログイン成功というメッセージが表示されています。

Logging in... done
Logged in as [Heroku アカウント名]

以上でUbuntu上でHerokuを使う準備が整いました。次に自作Node.jsアプリケーションHerokuに関連付ける設定をします。

自作WebアプリケーションとHerokuの関連付け

前提条件| 自作WebアプリケーションはGitでソースコードを管理できているものとします。

もしGitが使えていないという方はこちらの記事を参考にGitを導入してください。

あわせて読みたい
【超初心者向け】GitHubにアカウント登録~リポジトリ作成を解説! GitHubにアカウントを登録して、プログラミングを始めたいとお考えでしょうか? 本記事では、GitHubにアカウントを登録し、自分のプライベートリポジトリを作成するまで...

リポジトリとHerokuを関連付ける

ターミナルからheroku createコマンドを実行し、Heroku上にアプリケーションを作成します。

# 自作アプリのディレクトリまで移動
cd [Project Dir]

# heroku関連付け. [application_name]は自作アプリ名を入力
heroku create [application_name]

Creating ⬢ [application_name]... done
https://[application_name].herokuapp.com/ | https://git.heroku.com/[application_name].git

WebブラウザでHerokuにログインすると、先ほど設定したアプリケーションが追加されています。

Heroku | アプリケーションの確認
Heroku | アプリケーションの確認

git remote -vを実行すると、GitHub(origin)とは別にherokuというリモートリポジトリが追加されています。

# リモートリポジトリの設定を確認
git remote -v

heroku	https://git.heroku.com/[heroku_app_name].git (fetch)
heroku	https://git.heroku.com/[heroku_app_name].git (push)
origin	git@github.com:[user]/[repository_name].git (fetch)
origin	git@github.com:[user]/[repository_name].git (push)

以上で、自作WebアプリケーションとHerokuが関連付けられました。次は Heroku上でnode.jsをビルドするための設定を行います。

Node.js用ビルド設定

Heroku | ビルド設定を追加

Webブラウザから先ほど追加したアプリを開き、Settingsタブを開きます。Add buildpack というボタンをクリックします。

Heroku | Settingsタブ
Heroku | Settingsタブ

buildpackの一覧から nodejsを選択し、Save changesをクリックします。

Heroku | Buildpackの設定
Heroku | Buildpackの設定

自作アプリ | buildpack設定を確認

続いてUbuntuのターミナルに戻り、buildpack設定が正しく設定されたかを確認します。

# プロジェクトがあるディレクトリに移動
cd [Project Dir]

# buildpacks設定確認
heroku buildpacks

=== [application_name] Buildpack URL
heroku/nodejs

Node.js用のbuildpackが設定できました。さらに、自作アプリをHeroku上でビルドするための設定を行います。

自作アプリ | package.jsonに設定を追加

Herokuのデフォルト設定では、Node.jsアプリはnpm startというコマンドで実行されます。したがってpackage.jsonscriptsに”start”コマンドが必要です。

app.jsがエントリーポイントの場合、"start": "node app.js",のように設定します。また、Node.jsのバージョンを指定したい場合は、engines にバージョンを指定します。

{
  "name": "node_sample",
  "version": "1.0.0",
  "engines": {
    "node": "16.14.2"
  },
  "description": "sample application.",
  "main": "app.js",
  "scripts": {
    "start": "node app.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  ~~ 以下省略 ~~
}

これらは公式ページでNode.js用の設定方法が詳しく説明されています。

お疲れ様でした! いよいよデプロイします!

いよいよデプロイ

最後にHerokuのリポジトリにソースコードをpushすればデプロイ完了です。

package.jsonが存在するディレクトリによってデプロイの方法が変わるのでそれぞれ説明します。

プロジェクトのルートディレクトリにpackage.jsonがある場合

heroku createで関連付けしたディレクトリ内にpackage.jsonがある場合herokuのmainブランチを指定してpushします。

# デプロイ(ルートディレクトリにpackage.jsonが必要)
cd Project_root
git push heroku main

# 以下のようなメッセージならデプロイ成功!
…
remote: -----> Build succeeded!
remote:  !     This app may not specify any way to start a node process

プロジェクトのルートディレクトリにpackage.jsonがない場合

プロジェクトの構成によっては、package.jsonがルートディレクトリにない場合があります。例えば、以下のようなケースです。

Project_root/
├── App
│   ├── node_modules
│   ├── public
│   ├── controllers
│   ├── routes
│   ├── views
│   ├── package.json  # Appディレクトリ内に存在
│   └── app.js
└── 他のディレクトリ

この場合はgit subtree pushコマンドでpackage.jsonがあるディレクトリを指定します。

# ルートディレクトリにpackage.jsonがない場合
cd Project_root

# package.jsonのあるディレクトリを指定
# git subtree push --prefix [package.jsonがあるディレクトリ]/ heroku main
git subtree push --prefix App/ heroku main

以上でデプロイが完了です。全世界のユーザーがあなたのWebアプリを使えるようになりました。

デプロイしたWebアプリのURL確認方法

デプロイしたWebアプリのアクセスURLは、WebブラウザでHerokuにログインし、対象のアプリケーションのSettingsタブ > Domains から確認できます。

Heroku | 公開したWebアプリのアクセスURL
Heroku | 公開したWebアプリのアクセスURL

独自ドメインの設定もできるみたいだね。

以上で自作Webアプリケーションを公開できました。Webアプリケーションの起動、停止はWebブラウザ経由でいつでも行えます。

起動に失敗した場合はこちらの記事も参考にしてください。

あわせて読みたい
【エラー対処】HerokuでNode.js(express)アプリ起動に失敗(failed to bind to $PORT) HerokuでNode.js(express)のWebアプリをデプロイしたところ、Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch とい...

Webブラウザ経由でHeroku上のアプリケーション起動/停止を知りたい方はこちらもどうぞ。

あわせて読みたい
【Heroku】Webブラウザからアプリケーションの起動/停止方法をまとめ WebブラウザからHeroku上のWebアプリケーションを起動したり停止する方法をお探しでしょうか? 本記事を読めば、WebブラウザからHeroku上のWebアプリケーションを操作す...

まとめ

今回のまとめです。

  • Webアプリケーションの公開にはHerokuがおすすめ
  • Heroku CLIツールを利用してHerokuとプロジェクトを関連付けする
  • git pushHeroku上にデプロイ

日々のデスクワーク肩こりや首こりにお悩みではないでしょうか? 1つの解決方法としてマッサージガンという器具がおすすめです。Amazonで2000件以上の口コミを得たおすすめのマッサージ器具が気になる方はこちら

参考になったでしょうか。
ほかにも役立つ情報が他のページにもあるかもしれません。
ご覧になるかはあなた次第です!

この記事がイイねと思ったら、Twitterフォロー か  にほんブログ村のどちらかしてくれたら嬉しいよ!

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

コメント / ご要望

コメントする

goto
もくじ
閉じる