Heroku + angularJS + Yeoman + Vagrant(CentOS)で動かす場合の手順

色々見て回ったんですが、あまりにも途中途中が抜けていて、セットアップするのに時間がかかったので、順序を纏めます。

##1:VagrantにCentOSを入れる。
VMはVirtualBoxを今回使います。利用するLinuxは今回はCentOS6.5です。

詳細はこちらの方を見ていただくと良いと思います。

【参考】
<a herf="http://qiita.com/kurun/items/41725e31b8e13d2151dd">VagrantをMacで動作させてみた</a>

##2:MEAN環境の構築
MongoDB,Express,Angular.js,Node.jsで環境を作るのですが、そのままでやると後にYeoman + Herokuをやった時にエラーが出るので一部変更します。
先に、Rubyの最新版を入れます。一番確実なのが

<a herf="http://railstutorial.jp/chapters/beginning?version=4.0#sec-rubygems">Ruby on Rails チュートリアル 実例を使ってRailsを学ぼう Michael Hartl (マイケル・ハートル)</a>

の手順でやって下さい。CentOSでyumでrubyを入れてしまうと1.8.7しか入らないので確実にこの手順でやって下さい。ただし、選択するバイナリは2.0ではなく2.2.2を選んで下さい。また、Gitについてもyumでは入れず、後に説明する方法で入れて下さい。nodejsについても、v.0.10.36しか入らないので、yumでのセットアップではなく後述するnodebrewをつかって最新版のv0.12.4を入れて下さい。

途中、

```console
$ sudo apt-get install libxslt-dev libxml2-dev libsqlite3-dev # Linuxのみ
```

とありますが、これはUbunts/Debianのやり方なのでCentOSではapt-getではなくyumを使って下さい。

```console
$ sudo yum install libxslt-dev libxml2-dev libsqlite3-dev # Linuxのみ
```

Railsについては今回は使わないので入れなくても良いですが、おこのみでインストールして下さい。

Gitについてですが、1.7.1しか入らないので、最新版の2.4.3を入れるためには以下を参照して下さい。

```console
$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker
$ wget https://www.kernel.org/pub/software/scm/git/git-2.4.3.tar.gz
$ tar -zxf git-2.4.3.tar.gz
$ cd git-2.4.3
$ make prefix=/usr/local all
$ make prefix=/usr/local install
$ git --version
```

ここまで終わったら、MEAN環境をVagrantで構築してみたの下準備まで進めます。
そしたら、CentOSのセキュリティアップデートまで終わっていると思いますが、nodejsは入れないで下さい。先ほどお伝えしたnodebrewで今後は管理していきます。

<a herf="http://qiita.com/sinmetal/items/154e81823f386279b33c">node.jsのversionを管理するためにnodebrewを利用する</a>

今回はnpm installを使っていないので、やる必要ありませんが、今後更新したら必ず以下の手順を踏んで下さい。

<a herf="http://qiita.com/hiro93n/items/fccf71765ecd1dbb3088">node.jsをバージョンアップしたら最初にやるべきこと</a>

これが済んだら、MongoDB、bower, Gruntを手順通りに入れていき、yoを入れて、angularJSのフルスタックフレームワークであるYeomanを動かします。
取り敢えずgrunt serveでLocalが見えれば成功です。

次にHerokuをインストールしていきます。他のキータの記載だとHerokuコマンドしか載っていないので事前準備がなく、Heroku toolbelt等のSDKや下準備が書いていないため、そのままやっても動きません。
そこは公式チュートリアル通りにやる必要があります。
まず、<a href="https://www.heroku.com">heroku</a>にアクセスしSign upしましょう。管理画面に入れたら、SDKをインストールします。その際は以下の方の手順に従って下さい。

<a herf="http://qiita.com/tsumekoara/items/ea5e1b144620ffc4acca">Vagrant 上の CentOS 6.5 から Heroku を使うには。</a>

Herokuが無事インストールできたら、<a herf="http://qiita.com/yosukesannohe/items/34e904a76e8fad6bb63f">【Yeoman】generator-angular-fullstack を使って heroku にデプロイする方法</a>を参照して進めて下さい。途中、mongohqのaddonが記載されていますが、これは$18/month掛かるものですので、課金があることにご注意下さい。

ここまで来ると、heroku openでも、自ら設定したxxx.heroku.comを開いてもアクセスできるはずです。

そしたら、今度は<a herf="http://8th713.github.io/LearnAngularJS/#/">すぐ出来るangularJS</a>や、月額840円掛かりますが<a herf="https://app.codegrid.net/entry/angularjs-1">攻略！AngularJS</a>を見ながらやるも良し

- <a href="http://amzn.to/1T91kw4">AngularJSリファレンス</a>
- <a href="http://amzn.to/1Ml6eRp">AngularJSアプリケーション開発ガイド</a>
- <a href="http://amzn.to/1e0iSKW">シングルページWebアプリケーション ―Node.js、MongoDBを活用したJavaScript SPA</a>
- <a href="http://amzn.to/1MuTDzE">AngularJS　アプリケーションプログラミング</a>

を見てもいいと思います。また、公式の<a herf="http://campus.codeschool.com/courses/shaping-up-with-angular-js/intro">CodeSchool</a>を一つ一つやってもいいと思います。

Yeomanについては情報が足りないのでQiitaで補完するか＠ITのあなたの<a herf="http://www.atmarkit.co.jp/ait/articles/1407/02/news040.html">Web開発人生を変えるYeoman、Bower、Yoのインストールと使い方</a>当たりを読んでもらうと良いかもしれません。海外にもYeomanの書籍は少ないですね。

ただ、Rails使いからするとfullstack Frameworkでscaffoldは使いやすいと思います。しかも一番面倒なOAuth部分をモジュール化している当たりが非常に嬉しいですね。

ということで、かなり依存関係が複雑な構成なのですが、この手順でやれば後は暗記する感じでやれると思います。

ぶっちゃけChef作ったほうが早いかなと思っているので、次はそっちで挑戦したいと思います。