Node.jsアプリをHerokuにデプロイする方法を調べましたので、その際の手順を残します。
基本的には公式のデプロイガイドを参照しています。OSはUbuntu 16.04 Serverです。
次のソフトウェアはインストールされているものとします。
- Node.js
- npm
- Git
1. Herokuにアカウントを作ります
Herokuでアカウントを作ります。
2. Heroku CLIをUbuntuにインストールします
Heroku CLI(Command Line Interface)をインストールすると、herokuコマンドが使えるようになり、Herokuの操作が可能になります。
$ sudo add-apt-repository "deb https://cli-assets.heroku.com/branches/stable/apt ./" $ curl -L https://cli-assets.heroku.com/apt/release.key | sudo apt-key add - $ sudo apt-get update $ sudo apt-get install heroku
バージョンを確認してみます。
$ heroku -v
heroku-cli/6.13.18 (linux-x64) node-v8.3.0
3. Herokuにログインします
$ heroku login Enter your Heroku credentials: Email: *** Password: *** Two-factor code: *** Logged in as ***
4. Node.jsアプリを準備します
4-1. Hello Worldを返すNode.jsプロジェクトを用意します。
Node.jsプロジェクト用のフォルダ(node)を作り、そこにapp.jsを作成します。
@~/path/to/node/app.js
const http = require('http'); const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World\n'); }).listen(process.env.PORT || 3000, () => { console.log(`Server running.`); });
注意. Herokuで使用されるポート番号は動的に変わるので、ポート番号は環境変数の process.env.PORT
を使って指定します。
4-2. package.jsonを作成します。
Herokuに対して使用している言語や環境情報を伝えるにはpackage.jsonファイルを用意する必要があるので、npm init
コマンドで作成します。途中の質問事項は適時入力するかEnterでスキップします。
$ cd ~/path/to/node $ npm init package name: (deploy-test) version: (1.0.0) description: entry point: (app.js) test command: git repository: keywords: author: license: (ISC)
生成されたpackage.jsonには、start script
を追加する必要があります。下の"start"
の行を追加しました。これが無いとデプロイ後に npm ERR! missing script: start
としてエラーが発生します。
@~/path/to/node/package.json
"main": "app.js", "scripts": { "start": "node app.js", "test": "echo \"Error: no test specified\" && exit 1" },
4-3. Git管理をします
Gitリポジトリを作成します。
$ git init $ git add . $ git commit -m "Initial commit"
5. Herokuにデプロイします
プロジェクトフォルダに移動して、Heroku上に空のアプリケーションを作ります。
$ cd ~/path/to/node $ heroku create
Creating app... done, *** http://***.herokuapp.com/ | https://git.heroku.com/***.git Git remote heroku added
このときリモートリポジトリにHerokuのリポジトリが自動で登録されます。登録されたか確認してみます。
$ git remote -v heroku https://git.heroku.com/***.git (fetch) heroku https://git.heroku.com/***.git (push)
最後にHerokuにアプリケーションをプッシュします。
$ git push heroku master
heroku create時に生成されたURLにアクセスするとWebサイトが表示されます。
6. 異常発生時は?
Herokuへのプッシュに失敗する場合は、コンソールに表示されるエラーメッセージを確認して対応します。
Herokuへのデプロイ後にサイトが表示されない場合は、heroku logs
コマンドでエラーメッセージを確認して対応します。
$ heroku logs