LoginSignup
9
11

More than 5 years have passed since last update.

Mac で Heroku+node.js の環境を作る

Last updated at Posted at 2015-11-01

Mac で Heroku+node.js の環境を作る

手元のMacを使って、習学目的で Heroku で node.js のアプリを動かしてみようと思う。

(参考資料)
Herokuの新料金はお得なのか - フレクトのHeroku lab
Macにnodebrew(node.js, npm)をインストールする手順 - Qiita
nodebrew で Mac の Node.js 環境をスッキリさせた - akiyoko blog
Node.jsのデーモン化ツールpm2をインストール - Qiita

Heroku の登録とログイン

Heroku では、Free アカウントは日に18時間までの利用が可能とのこと。30分アクセスがなければ自動的にsleepし、また18時間以上利用すると6時間sleepでお寝んねとのこと。

基本的には Heroku の Introduction に従って、指示されたことをしてみると良い。基本的な理解はここで全てできる。ここに書くのもその補足などである。

登録

さて。Heroku 利用は初めてなのでアカウント作成から。
登録に関しては特に問題なく終了できたので、詳細は割愛。

Heroku サービスへのログイン

Heroku の Web に作成したアカウントでログインすると Dashboard がお目にかかる。Dashboard から Node.js の Get Started を選び、Introduction へ進む。この Introduction では、Mac のターミナルで実行するプログラム Heroku Toolbelt のインストールから、Node.js の基本的な構成(設定ファイル)などを教示してくれる。特に後者は、ポイントを押さえてくれていて、分かりやすくありがたい(英語ですがね)。

サンプルプログラムのデプロイ

  1. Introduction に従って、Heroku Toolbelt をDLして、pkg ファイルをインストールする(GUI上は変化はないよ。ターミナルで heroku コマンドが使えるようになる)。
  2. ターミナルでサンプルプログラムを Git から手に入れ、Heroku へデプロイする。
  3. コードを編集し、Heroku アプリ側の領域に作った Repository に git push する。

だいたいこんな流れ。
AWS などのインスタンスだと ssh などを使って当該マシンにログインしたりするが、Heroku の場合はローカル環境から自分の Heroku アプリをコントロールするようだ。そういった総合的な操作のコマンドの名前も heroku である。

$ # Mac の GUI から heroku-toolbelt.pkg をインストール後
$ heroku
Installing Heroku Toolbelt v4... done.
For more information on Toolbelt v4: https://github.com/heroku/heroku-cli
Setting up node-v4.2.1... done
Installing core plugins heroku-cli-addons, heroku-apps, heroku-fork, heroku-git, heroku-local, heroku-run, heroku-status... done
(...snipped...)

$ heroku login
(...snipped...)
$ # 適当な作業ディレクトリを作る
$ mkdir -p ~/devel/heroku/sample
$ cd ~/devel/heroku/sample

$ # サンプルプログラム
$ git clone https://github.com/heroku/node-js-getting-started.git 
$ cd node-js-getting-started

$ # アプリの作成
$ heroku create

$ # アプリのデプロイ
$ git push heroku master
Counting objects: 430, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (335/335), done.
Writing objects: 100% (430/430), 221.59 KiB | 0 bytes/s, done.
Total 430 (delta 62), reused 430 (delta 62)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Node.js app detected
(...snipped...)
remote:        https://hogehoge-fugafuga-5963.herokuapp.com/ deployed to Heroku
remote: 
remote: Verifying deploy... done.

$ # ランダムのサブドメインでWebアプリ https://hogehoge-fugafuga-5963.herokuapp.com/ が作られた
$ # 稼働状況を確認
$ heroku ps:scale web=1
Scaling dynos... done, now running web at 1:Free.
$ # ブラウザで確認。↓ブラウザを開いてくれるショートカット。
$ heroku open
Opening hogehoge-fugafuga-5963... done

ローカル環境(Mac)に Node.js の開発環境を整える

ローカルの Mac に Node.js をインストールすれば、ローカルで動作内容などを確認しながら開発しつつ、完成版を Heroku にデプロイする、という流れを作れる。

nodebrew のインストール

冒頭の参考ページを参照しながら、nodebrew をインストールする。

$ cd
$ curl https://raw.githubusercontent.com/hokaccha/nodebrew/master/nodebrew | perl - setup

# カレントのパスを通す
$ export PATH=$HOME/.nodebrew/current/bin:$PATH

# .bash_profile にも記述しておく
$ vi .bash_profile

(... snipped ...)
export PATH=$HOME/.nodebrew/current/bin:$PATH

# nodebrew を最新版に
$ nodebrew selfupdate

node.js と rpm のインストール

同じ記事を参考に Node.js の最新版をインストールする。
なお、サンプルプログラムが、v0.12.7 を使っていたので、それに合わせた。
が、libgcc_s.so のバージョン違いで、コンパイルの際、リンクで失敗する。

$ # インストール失敗
$ nodebrew install latest
(...snipped...)
ld: library not found for -lgcc_s.10.5
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [/Users/onodera_takahiro/.nodebrew/src/v0.12.7/node-v0.12.7/out/Release/openssl-cli] Error 1
make: *** [node] Error 2

libgss_s.so の当該バージョンをソースからコンパイルするのもちょっと手間かもなので、別なページを参考に、バイナリインストールをしてみる。

$ nodebrew ls-remote
$ nodebrew install-binary v0.12.7
Installed successfully
$ nodebrew ls
v0.12.7
current: none
$ nodebrew use v0.12.7
use v0.12.7
$ node -v
v0.12.7

npm も最新版に更新しておく。なお、npm は Node.js のパッケージ管理ツールである。

$ npm install -g npm

ローカルの Mac でサンプルページを動かす

ローカルで開発できるようにするために、localhost でアプリを実行させるようにする。
サンプルプログラムのディレクトリで、npm を実行して、モジュールの依存関係を解決する。ま、要はローカルで必要なモジュールをインストールするってことね。

$ # サンプルをインストールした場所
$ cd ~/devel/heroku/sample/node-js-getting-started
$ npm install

コマンド heloku で、アプリを起動する。5000番ポートで受け付けるアプリが立ち上がるはずだ。

$ heloku local web

ブラウザを使って、http://localhost:5000/ にアクセスして、サンプルアプリのページが開けばOK。

(補足)pm2 を使って動かしてみる

コマンドhelokuを使ってもいいが、この場合、Daemon化していないので当然ながらプロンプトは返ってこない。なので適当なDaemon化ツールをインストールしてみる。
forever とか有名っぽいけど、多機能・高性能な pm2 を、後学のためにもインストールしてみた。
インストールの仕方とかは、こことかたくさんあるので、詳しい話は割愛。

$ # pm2 をグローバルインストールする
$ npm install -g pm2

$ # サンプルディレクトリに
$ cd ~/devel/heroku/sample/node-js-getting-started
$ pm2 start index.js
$ pm2 list
$ pm2 stop index.js

(EOF)

9
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
11