Node.jsとMongoDBのAPIをHerokuにデプロイするまで


はじめに。

私は今、Reactと、Nodeでwebアプリを作っています。EC2に環境立ち上げるのはクソだるい... ってことで今までRailsでしか使ってなかったHerokuを使うことに。

Reactは超簡単にデプロイできて奇跡だと思った。Nodeも考える時間含めて2時間くらいでデプロイできた。奇跡!!!

セールスフォースの株買って大切に大切に保持しておきたい。

Node.jsとMongoDBのAPIをHerokuにデプロイ成功した絵

単純にルートで文字返してるだけ。

一番最初はProcfileを作る

僕はローカルで、

% node app/app.js

でアプロを起動させていたので、

% pwd
/Users/ryosuke-hujisawa/Desktop/アプリ

// ここにProcfile作った
% ls
README.md       app         node_modules        package-lock.json   package.json

$ touch Procfile

//これで動いた
web: node app/app.js

次、herokuアプリを作ろう

$ heroku create herokuアプリの名前

//これでリモート確認できるよ
$ git remote -v

ProcfileをHerokuにまずはPushします。

$ git add . 
$ git commit -m "setting up to push to Heroku"
$ git push heroku master

プロダクション Databaseを作ります。

$ heroku addons:create mongolab:sandbox

DBの設定を書き換えよう

僕は元々こうなってたのを

module.exports = {
    'secret': 'oauthServerSampleSecret',
    'database': 'mongodb://localhost/server_oauth'
  }

こうした

module.exports = {
    'secret': 'oauthServerSampleSecret',
    'database': process.env.DEV_MONGODB_URI || process.env.MONGODB_URI
  }

process.env.DEV_MONGODB_URI. これは.envに書く。

で、process.env.MONGODB_URI はherokuで設定する。これですね↓

次、dotenvをインストールしよう

run npm install dotenv 

もしくは

yarn add dotenv

で、dotenvを確実に、一番上に僕が読み込んだ。

                                require('dotenv').config()
                                //dotenvの下にdbの設定書く
    var config                = require('./config'); //ここにdbの設定
    var express               = require('express');
    var app                   = express();

で、Herokuにpushする

$ git push heroku master

終わり!

おめでとうございます。

$ heroku open 

これで、NodeJSのapiをHerokuで運用できるね。

参考

How to deploy your Node.js / MongoDB app to the web, using Heroku

余談

途中でエディタ権限で保存できなくなってこのコマンド使った。

sudo chmod -R 777 プロジェクトディレクトリ