MEAN.IO Documentation 解説 - インストール編(Ubuntu)

## mean.io
![MEAN_-_Full-Stack_JavaScript_Using_MongoDB__Express__AngularJS__and_Node_js_.png](https://qiita-image-store.s3.amazonaws.com/0/46268/e4e7dc00-d72a-328c-43db-fa597280ca9b.png)

以下のドキュメントを参考し、本記事を書きました。
http://learn.mean.io/

## Local開発環境構築

vagrant, virtual boxを利用しローカルに開発環境を構築します。vagrant,virtual boxのインストール手順は割愛させていただきます。

### Linux(Ubuntu)インストール
```bash
# イメージダウンロード
vagrant box add precise32 http://files.vagrantup.com/precise32.box
# 初期化
vagrant init precise32
```

### Vagrantfile編集
```rb
config.vm.network "private_network", ip: "192.168.40.10"
```

### サーバー接続
```
vagrant up
vagrant ssh
```


## PREREQUISITE TECHNOLOGIES

### curl, git インストール
```
sudo apt-get install curl
sudo apt-get install git
```

### Node.jsインストール
```bash
curl -sL https://deb.nodesource.com/setup | sudo bash -
sudo apt-get update
sudo apt-get install nodejs
```

### mongodbインストール
```bash
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/10gen.list
sudo apt-get update
sudo apt-get install mongodb-10gen
```
起動

```
sudo service mongodb start
```

### パッケージ管理ツールインストール
```
sudo npm install -g gulp
sudo npm install -g bower
```

## INSTALLATION

### mean cli インストール
```bash
sudo npm install -g mean-cli
```

### meanプロジェクト初期化
```bash
mean init myApp
```

※ mean init 実行時以下のエラーが発生した場合

```bash
There are 605 files in your ~/.npm owned by root
Please change the permissions by running - chown -R `whoami` ~/.npm

/usr/lib/node_modules/mean-cli/lib/utils.js:67
      throw('ROOT PERMISSIONS IN NPM');
      ^
```

mean-cliのスクリプトを開き

```bash
sudo vi /usr/lib/node_modules/mean-cli/lib/utils.js
```
init時のパーミッションチェックをコメントアウトする

```js
exports.checkNpmPermission = function (callback){
  var homeDir = process.env[isWin ? 'USERPROFILE' : 'HOME'];
  var findCmd = 'find ' + homeDir +'/.npm ' + '-user root';
/*
  shell.exec(findCmd, function( status, output){
    var hasRootFiles = output.split(/\r\n|\r|\n/).length;
    if (hasRootFiles > 1){
      console.log (chalk.red('There are ' + hasRootFiles + ' files in your ~/.npm owned by root'));
      console.log(chalk.green('Please change the permissions by running -'), 'chown -R `whoami` ~/.npm ');
      throw('ROOT PERMISSIONS IN NPM');
    }
  });
*/
  callback();
};
```

参考サイト
http://stackoverflow.com/questions/29388995/mean-io-installation-on-windows

この画面が表示されればOK

![1__vagrant_precise32_____ssh_.png](https://qiita-image-store.s3.amazonaws.com/0/46268/13f7d03e-5cf1-4cee-054f-ed20aea203fa.png)

### meanプロジェクトインストール

```bash
cd myApp
sudo npm install
```

※ npm install 時「npm ERR! Please try running this command again as root/Administrator. ~ 」が発生した場合

```
sudo chown -R `whoami` ~/.npm
```

参考サイト
http://qiita.com/Mitsunori_Tsukada/items/7b660d72f2cd42931d19


※ 「{ [Error: Cannot find module '../browser_build/Release/bson'] code: 'MODULE_NOT_FOUND' }」エラー発生時

```bash
vi ~/src/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js
```
設定値を変更

```js
//bson = require('../build/Release/bson');
bson = require('../browser_build/bson');
```
参考サイト
http://stackoverflow.com/questions/28651028/cannot-find-module-build-release-bson-code-module-not-found-js-bson



## ブラウザに表示してみよう！

### タスクマネージャー起動

```bash
gulp
# gulpを使えない場合
node server
```

### host設定
```bash
vi ~/myApp/config/env/development.js
```

hostname追加

```js
module.exports = {
  db: 'mongodb://' + (process.env.DB_PORT_27017_TCP_ADDR || 'localhost') + '/mean-dev',
  debug: true,
  // ここ！！
  hostname: '0.0.0.0',
  logging: {
    format: 'tiny'
  },
```

### ブラウザで表示してみる
http://192.168.40.10:3000

![MEAN_-_FullStack_JS_-_Development_-_MEAN_-_FullStack_JS_-_Development.png](https://qiita-image-store.s3.amazonaws.com/0/46268/51f67c28-2393-25e0-044e-9a4eeb0a3f44.png)

この画面が表示されればOK！！